2019年10月9日 星期三

使用 Homebrew 安裝 MariaDB


MariaDB 簡介


MariaDB 是一個關聯式資料庫管理系統(Relational Database Management System, RDBMS),是一個主要由開源社群維護、採用 GPL v2 授權的 MySQL 分叉(Fork)。MariaDB 由 MySQL 的主要創始人 Ulf Michael Widenius 所主導開發,會建立這個分支的原因之一是原本收購了 MySQL AB 的 Sun Microsystems 被資料庫巨擘 Oracle 給收購了,使得 MySQL 有被閉源的風險。和 MySQL 的名稱來自 Widenius 女兒 My 一樣,MariaDB 的名稱來自 Widenius 女兒的名字 Maria。

要選擇 MySQL 或是 MariaDB 並不是一件容易的事,因為兩者之間的差異逐漸擴大。本文將僅介紹 MariaDB 的安裝以及簡易的使用方式。

安裝 MariaDB

要在 macOS 上安裝 MariaDB 十分簡單,只需要執行下列的命令:

brew update
brew upgrade
brew install mariadb


(Homebrew 的簡介請參考。)


啟動與連線 MariaDB Server


為了要保持跟 MySQL 的操作相容性,MariaDB 大部份的操作命令沿用了 MySQL 的命令。要啟動 MariaDB server 需要執行下列的命令:
mysql.server start

mysql.server 是 MariaDB 用來啟動、停止、重新啟動、以及檢查狀態的腳本 (Script)。


要停止 MariaDB server 需要執行下列的命令:
mysql.server stop --user=[my_current_user]


因為是使用目前的使用者啟動,所以在停止時需要加上使用者名稱 --user=[my_current_user]。如果沒有加上使用者名稱,會出現下列的錯誤訊息:
ERROR! MariaDB server process #Pro_ID is not running!


若是使用下列的命令檢查伺服器的狀態:
mysql.server status


則會出現下列的錯誤訊息
ERROR! MariaDB is not running, but PID file exists


解決的方式,一樣是在命令中加入 --user 這個參數。


在啟動 MariaDB 後,可以使用下列的命令連線 MariaDB:
sudo mysql -uroot


剛安裝完 MariaDB 時,root 帳號是沒有密碼的。在之前的版本,只要使用本機使用者帳號即可連線 MariaDB,這樣的機制會有資訊安全的疑慮。因此,從 MariaDB 10.4.3 開始,在未設定 root 帳號密碼前,MariaDB 會使用 unix_socket 插件 (Plugin)保護 root@localhost,需要透過系統用戶憑證來連線。如果沒有使用 sudo,會出現下列的錯誤:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'


設定 root 密碼


傳統設定密碼的方式為使用 mysqladmin 命令:
sudo mysqladmin -uroot password your_password


在設定好 root 的密碼後,可以使用傳統的認證方式 (mysql_native_password) 連線到 MariaDB:
mysql -uroot -pyour_password


MariaDB 也提供了 mysql_secure_installation 這個設定腳本,來進行密碼以及伺服器的相關設定,並且建議在上線服務前需要先執行該腳本。在設定完密碼後,可以直接執行該命令 (未設定 root 密碼時,要加上 sudo):
mysql_secure_installation


該腳本會進行下列的設定:

1. 是否更換為 unix_socket 認證:建議選擇 N,保留目前的認證方式1

2. 設定 MariaDB 的 root 密碼:密碼已經設定好了,可以選擇 N,否則選 Y 進行密碼設定;

3. 移除匿名使用者:建議選擇 Y;

4. 禁止 root 遠端登入:建議選擇 Y;

5. 移除 test 資料庫:建議選擇 Y;

6. 重新載入權限表格:建議選擇 Y,讓上面的設定生效。


註1:在選擇 Y 後,目前的 mysql_native_password 密碼會失效,在不是使用 sudo 命令時,將無法繼續執行腳本。

將 mysqld 設定為守護行程 (daemon)


brew services start mysql



brew services 的簡介可以參考這裡

沒有留言: