Tag: Percona
在 MySQL / MariaDB 插入資料時,每筆資料也會有限制,預設值是 16MB,其實這個 16MB 的限制已經很寬鬆,一般情況都會夠用,但如果將檔案 (例如圖片) 直接儲存在 MySQL 的話,便有可能出現錯誤,當用 inert 插入 或 update 更新的資料超過限制的話,會出現以下錯誤: Error 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes 要解決這個問題可以修改 MySQL …
phpMyAdmin 是十分流行的 MySQL 資料庫管理系統,可以透過網頁介面管理 MySQL 資料庫,提供建立、編輯、刪除資料庫及資料表,也可以管理使用者及其權限。以下文章會介紹在 RHEL, CentOS 用 yum 安裝 phpMyAdmin 的方法。 在安裝 phpMyAdmin 前,需要先系統安裝好 Apache, PHP 及 MySQL (MariaDB),確定安裝好後便可以開始進行安裝。 1. 加入 EPEL Repository 在 CentOS 預設的 Repository …
在安裝 MySQL 或 MariaDB 伺服器後, 當執行 mysql_secure_installation 後會完成一些基本的安全設定, 其中一項就是設定 root 的密碼。 如果在往後忘記了這個 MySQL root 密碼, 可以用以下方法重設, 以下文章會以 CentOS 環境作為例子. 首先將運行中的 MySQL Server 停止執行: # systemctl stop mariadb 或 # …
今天在一個系統上除錯, 發現用以下 SQL 指令找不到資料: 要用以下 SQL 指令才可以找到: 用 phpMyAdmin 檢查那些資料好像沒問題, 再細心找才發現有些資料的欄位結尾有 “\n” 或 “\r”, 出現這個問題的原因大欄是在插入資料時沒有刪除掉 “\n” 這類字元, 插入的部份很容易解決, 再來要將原有的資料內的 “\n” 及 “\r” 刪除。 在處理前先將資料表備份, 然後可以用以下 SQL 指令將所有 “\n” 及 …
原本用 mysqldump 備份 MySQL 一直沒有問題, 但近日在一台新主機上用 mysqldump 備份所有資庫時, 出現以下錯誤: mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES 我也肯定輸入的 MySQL 密碼沒有問題, 因為已經將登入資儲存, …
在 Linux CLI 下連接到 MySQL 或 MariaDB 時, 最簡單的方法是用預設的 MySQL 客戶端工具, 連接方法是這樣: $ mysql -u root -p 這樣連接 MySQL 最大的問題是, 登入 MySQL 後, 在裡面輸入的 SQL 指令或語法要憑記憶, 逐個字母輸入。而 MyCLI 就可以解決這個問題, …
RHEL 及 CentOS 7 預設的資庫系統是 MariaDB 5.5 (等同 MySQL 5.5), 雖然現時 MySQL 最新版是 5.7, 但一般上升級都建議一級一級上, 而 MySQL 5.6 比 5.5 也提高了效能及提供更多功能, 以下是在 RHEL 及 CentOS 從原來的 MySQL 5.5 或 …
當錯誤刪除了 MySQL 的 InnoDB 資料庫檔案 ibdata 及 ib_logfile, 如果 MySQL 伺服器仍在執行狀態, 而且資料可以照常寫入, 切記不要關閉 MySQL 伺服器或 kill 掉 mysqld, 這時還可以將 InnoDB 資料庫修復的, 以下記錄修復的步驟, 如果要測試, 切記在測試環境進行, 切勿在生產環境測試: 1. 先找出 mysqld 的 …
在 MySQL 要刪除資料可以用 DELETE 指令, 而清空資料表可以用 TRUNCATE, 刪除資料表則可以用 DROP TABLE, 以下會介紹這三個 MySQL 指令的分別。 TRUNCATE MySQL 的 TRUNCATE 是用作清空資料表, auto_increment 的數值也會重設, 清空後的資料表就如同剛建立一樣, 因為 TRUNCATE 的做法是先 DROP 掉資料表, 再用 CREATE 指令重新建立資料表, …
MySQL 使用 InnoDB 時,當資料表用 DELETE FROM 刪除資料後,硬碟空間並不會立即釋放,因為 MySQL 只對已刪除的資料標記為刪除,並沒有真正刪除資料,這會導致 InnoDB 的檔案不斷擴大。只有在 DROP TABLE 及 TRUNCATE TABLE 時才會釋放空間。 如果沒有開啟 innodb_file_per_table,所有 InnoDB 的資料都會儲存在 ibdata 檔案內,對於資料庫的體積很大的 MySQL Server,要釋放硬碟空間會很痛苦,因為只有將 MySQL 資料庫導出,再重新將備份還原才可以釋放空間。如果 innodb_file_per_table 有開啟,每個 …