Category: MySQL

為什麼要關閉 MySQL Query Cache

MySQL 的 Query Cache 在某些環境是有一定作用的,但大部份的情況都沒什麼作用,而且反而會影響效能。 當 MySQL 執行 SELECT 查詢時,會將結果放到 Query Cache 內,當下次執行相同的 SELECT 查詢時,不會在資料庫查詢結果,而會在 Query Cache 取得,從而提高執行效率。 這樣聽起來不錯,但實際上 Query Cache 的機制有一個問題,就是當資料表被更動後,儲存在 Query Cache 的 Cache 會失效,MySQL 會在背後將 Cache …

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

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

CentOS 7 安裝 phpMyAdmin

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

重設 MySQL / MariaDB 忘記的 root 密碼

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

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

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

解決 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 密碼沒有問題, 因為已經將登入資儲存, …

MySQL / MariaDB 5.5 升級到 MySQL 5.6

RHEL 及 CentOS 7 預設的資庫系統是 MariaDB 5.5 (等同 MySQL 5.5), 雖然現時 MySQL 最新版是 5.7, 但一般上升級都建議一級一級上, 而 MySQL 5.6 比 5.5 也提高了效能及提供更多功能, 以下是在 RHEL 及 CentOS 從原來的 MySQL 5.5 或 …

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

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