Category: MySQL / Mariadb

RHEL / CentOS / Fedora 編譯安裝 MySQL 5.6

編譯原始碼安裝軟體其中一個好處, 是自由度較高, 可以根據自己的需要修改編譯選項, 但缺點是需時較長, 及日後維護較花時間。以下是在 RHEL, CentOS 及 Fedora 用原始碼編譯及安裝 MySQL 5.6 的方法。首先建立 mysql 帳號及群組: # groupadd mysql # useradd -g mysql mysql 下一步是用 wget 下載 MySQL 5.6 最新版本的原始碼, 現時最新版本是 …

修改 MySQL 密碼

MySQL 提供幾種不同的方法可以修改密碼, 分別是 UPDATE, SET PASSWORD 及 GRANT, 下文會示範如何用這幾種方法修改 MySQL 用戶的密碼。UPDATE:MySQL 的 UPDATE 作用是修改資料, 要修改密碼只要修改 “mysql” 資料庫裡面的 “user” 資料表內, 相關用戶的 “password” 資料就可以, 例如要修改密嗎的 MySQL 用戶是 “phpini”, host 是 “localhost”, 新密碼設定為 …

MySQL SUBSTRING 函式

很多程式語言都有抽取字串部份的函式 (PHP 及 Perl 是 substr), MySQL 也有類似的函式 — SUBSTRING() 及 SUBSTR(), 兩者都用法是一樣的, 因為 SUBSTR() 只是 SUBSTRING() 的別名。它們可以用作抽出一個欄位資料的其中一部份字串。以下是簡單例子:以上會從 “MySQL SUBSTRING testing” 第 1 個字元開始抽取, 所以會輸出:MySQL SUBSTRING testing如果將上面的 1 改成 6, …

MySQL 的 Full-text Search

MySQL 使用 Full-text Search (全文檢索), MySQL 會自動為資料建立索引, 及在資料變更時重新建立索引。以前 Full-text Search 只支援 MyISAM, 並不支援 InnoDB, 由 MySQL 5.6 開始 InnoDB 及 MyISAM 也都支援 Full-text Search 了, 支援的欄位類型有 CHAR, VARCHAR 及 TEXT。MySQL …

CentOS 安裝 MariaDB 10.0

MariaDB 10.0.x 版是以 MariaDB 5.5 為基礎, 加上移植自 MySQL 5.6 版的功能和自行開發的新功能。以下會介紹在 RHEL 及 CentOS 用 YUM 安裝 MariaDB 10.0 的方法。首先建立 MariaDB 的 YUM Repository, 建立檔案 /etc/yum.repos.d/MariaDB.repo, 根據不同的系統加不相關內容:RHEL / CentOS 7 RHEL …

Percona XtraBackup 備份 MySQL

MySQL 熱備份時如果沒有停止 MySQL 或者變成唯讀狀態, 備份檔有機會出現不連貫的問題。而 Percona XtraBackup 就是一個可以在 MySQL 不停機的情況下對進行熱備份的開源工具, 而且可以選擇完整備份或者增量備份。除了 MySQL 外, 它也支援 MariaDB 及 Percona Server。由於 Percona XtraBackup 是借用 transaction log 進行備份, 所以熱備份只適用於 InnoDB 的資料庫, 如果資料庫使用 MyISAM, 用 …

MySQL 設定 Master-Slave Replication 同步

MySQL 的 Master-Slave Replication (同步) 是當 Master 資料庫有變動時, 自動同步到 Slave 資料庫。由於 MariaDB 在 RHEL/CentOS 7 開始已經成為預設資料庫, 而且可以完全取代 MySQL, 所以以下也會以 MariaDB 進行設定, 但同樣方法在 MySQL 一樣可以的。假設已經有兩台 MySQL 伺服器, 以下兩部份分別是 Master 及 Slave …

MySQL 語法 – INSERT … ON DUPLICATE KEY UPDATE

有時在 MySQL 新增資料時, 會先判斷資料是否存在, 如果資料不存在會執行 INSERT 語句, 如果資料存在則用 UPDATE 語句。以前要這樣做, 需要先用 SELECT 判斷, 就像這樣:雖然可以完成上面提到的任務, 但寫程式時就會較麻煩, MySQL 提供了 INSERT … ON DUPLICATE KEY UPDATE 語句, 可以一行就完成, 無需用 IF 及 SELECT, 寫法是這樣:要用上面的 …