Tag: MariaDB

MySQL / MariaDB 用 logrotate 替 Log 記錄檔輪替

MySQL 或 MariaDB 的 Log 記錄檔可以紀錄 MySQL 的錯誤, 對伺服器的除錯很有用, 但這個 MySQL Log 記錄檔跟其他 log 一樣, 不理它會一直增大容量, 而 MySQL 內置沒有記錄檔輪替的功能, 要做記錄檔輪替需要借用其他工具, 可以是自行編寫 Shell Script 或 logrotate, 以下文章會示範在用 logrotate 將 MySQL 的 …

MySQL / MariaDB 修改資料插入上限 max_allowed_packet

在 MySQL / MariaDB 插入資料時,每筆資料也會有限制,預設值是 16MB,其實這個 16MB 的限制已經很寬鬆,一般情況都會夠用,但如果將檔案 (例如圖片) 直接儲存在 MySQL 的話,便有可能出現錯誤,當用 inert 插入 或 update 更新的資料超過限制的話,會出現以下錯誤:Error 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes要解決這個問題可以修改 MySQL 的 max_allowed_packet 變數。在修改前可以先查看目前的 …

CentOS 7 安裝 phpMyAdmin

phpMyAdmin 是十分流行的 MySQL 資料庫管理系統,可以透過網頁介面管理 MySQL 資料庫,提供建立、編輯、刪除資料庫及資料表,也可以管理使用者及其權限。以下文章會介紹在 RHEL, CentOS 用 yum 安裝 phpMyAdmin 的方法。在安裝 phpMyAdmin 前,需要先系統安裝好 Apache, PHP 及 MySQL (MariaDB),確定安裝好後便可以開始進行安裝。1. 加入 EPEL Repository 在 CentOS 預設的 Repository 沒有包含 phpMyAdmin,要用 yum …

重設 MySQL / MariaDB 忘記的 root 密碼

在安裝 MySQL 或 MariaDB 伺服器後, 當執行 mysql_secure_installation 後會完成一些基本的安全設定, 其中一項就是設定 root 的密碼。如果在往後忘記了這個 MySQL root 密碼, 可以用以下方法重設, 以下文章會以 CentOS 環境作為例子.首先將運行中的 MySQL Server 停止執行: # systemctl stop mariadb 或 # systemctl stop mysql …

MySQL 刪除欄位內所有 \n 及 \r 字元

今天在一個系統上除錯, 發現用以下 SQL 指令找不到資料:要用以下 SQL 指令才可以找到:用 phpMyAdmin 檢查那些資料好像沒問題, 再細心找才發現有些資料的欄位結尾有 “\n” 或 “\r”, 出現這個問題的原因大欄是在插入資料時沒有刪除掉 “\n” 這類字元, 插入的部份很容易解決, 再來要將原有的資料內的 “\n” 及 “\r” 刪除。在處理前先將資料表備份, 然後可以用以下 SQL 指令將所有 “\n” 及 “\r” 空白字元刪除, 以下例子會將 “table_name” …

解決 mysqldump Access denied …… ‘information_schema’ when using LOCK TABLES

原本用 mysqldump 備份 MySQL 一直沒有問題, 但近日在一台新主機上用 mysqldump 備份所有資庫時, 出現以下錯誤:mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES我也肯定輸入的 MySQL 密碼沒有問題, 因為已經將登入資儲存, 而且其他資料庫也可以成功匯出, 解決方法有以下兩個:1. 加入 …

修復錯誤刪除 InnoDB ibdata 檔案資料

當錯誤刪除了 MySQL 的 InnoDB 資料庫檔案 ibdata 及 ib_logfile, 如果 MySQL 伺服器仍在執行狀態, 而且資料可以照常寫入, 切記不要關閉 MySQL 伺服器或 kill 掉 mysqld, 這時還可以將 InnoDB 資料庫修復的, 以下記錄修復的步驟, 如果要測試, 切記在測試環境進行, 切勿在生產環境測試:1. 先找出 mysqld 的 pid, 可以用 …

MySQL – DELETE, TRUNCATE 及 DROP 的分別

在 MySQL 要刪除資料可以用 DELETE 指令, 而清空資料表可以用 TRUNCATE, 刪除資料表則可以用 DROP TABLE, 以下會介紹這三個 MySQL 指令的分別。TRUNCATEMySQL 的 TRUNCATE 是用作清空資料表, auto_increment 的數值也會重設, 清空後的資料表就如同剛建立一樣, 因為 TRUNCATE 的做法是先 DROP 掉資料表, 再用 CREATE 指令重新建立資料表, 刪除所有資料的執行效率比 DELETE 高, …