自從 MySQL 被 Oracle 收購之後,很多人都擔心 MySQL 將來可能會閉源,因此才分支出 MariaDB。維基百科上面寫說 MariaDB 的 API 協定相容於 MySQL,這表示您的專案如果原本是使用 MySQL,現在要改用 MariaDB 的話,程式基本上根本不需要修改,這部份我自己安裝完之後也有寫一些簡單的程式測試過,確實與操作 MySQL 一模一樣,連 phpMyAdmin 也都可以直接連 MariaDB。

MariaDB 安裝流程

首先先到官網下載頁面選擇您要安裝的作業系統、版本以及要安裝的 MariaDB 版本,我是安裝在 Ubuntu 22.04,所以是選擇 Ubuntu 22.04 "jammy" > 11.1 > OSSPlanet + Ubuntu-TW - Ubuntu 台灣在地推廣組,然後按照畫面出現的指令安裝 apt 儲存庫。

安裝金鑰

            
                $ sudo apt-get install apt-transport-https curl
                $ sudo mkdir -p /etc/apt/keyrings
                $ sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
            
        

加入儲存庫:使用 vim 編輯 /etc/apt/sources.list.d/mariadb.sources,並填寫以下內容。

            
                # MariaDB 11.1 repository list - created 2023-11-08 06:16 UTC
                # https://mariadb.org/download/
                X-Repolib-Name: MariaDB
                Types: deb
                # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
                # URIs: https://deb.mariadb.org/11.1/ubuntu
                URIs: https://ftp.ubuntu-tw.org/mirror/mariadb/repo/11.1/ubuntu
                Suites: jammy
                Components: main main/debug
                Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
            
        

安裝 MariaDB

            
                $ sudo apt-get update                   # 更新
                $ sudo apt install mariadb-server       # 安裝 MariaDB
                $ sudo systemctl status mariadb         # 安裝完服務就已經啟動了,可以再檢查一下
                $ mysql_secure_installation             # 初始化 MariaDB
            
        

初始化 MariaDB 會需要回答幾個問題,如下:

Enter current password for root (enter for none)
輸入 root 密碼,預設 MariaDB 沒有密碼,直接按 enter 就好了。
Switch to unix_socket authentication [Y/n]
切換到 unix_socket 身份驗證,這是在 10.4.3 版新增的身份驗證方式,沒有強制使用,輸入 n。
Change the root password? [Y/n]
修改資料庫 root 帳號密碼,輸入 y。
New password
輸入要設定的 root 帳號密碼。
Re-enter new password
再輸入一次輸入要設定的 root 帳號密碼。
Remove anonymous users? [Y/n]
移除匿名帳號,輸入 y。
Disallow root login remotely? [Y/n]
不允許遠端使用 root 帳號登入,這邊我是輸入 n,不過考量安全性應該要輸入 y。
Remove test database and access to it? [Y/n]
移除測試資料庫與帳號,輸入 y。
Reload privilege tables now? [Y/n]
重新載入權限設定,輸入 y。

到這邊就已經完成安裝了,可以使用以下指令登入試試看。

            
                $ sudo mysql -u root -p
            
        

常用指令

            
                $ sudo systemctl enable mariadb         # 開機自動啟動服務
                $ sudo systemctl start mariadb          # 啟動服務
                $ sudo systemctl stop mariadb           # 停止服務
                $ sudo systemctl restart mariadb        # 重新啟動服務
                $ sudo systemctl status mariadb         # 查看服務狀態
            
        

允許外部連線

MariaDB 安裝好後,預設只允許從 localhost 連進資料庫,但為了管理方便,通常都會透過遠端電腦並安裝資料庫管理工具進行管理。 如果要允許外部連線,請按照以下步驟進行設定。

編輯 MariaDB 設定檔
編輯 /etc/mysql/mariadb.conf.d/50-server.cnf,找到 bind-address = 127.0.0.1 這一行,在這行前加入 # 註解掉。 修改後,重啟 MariaDB 服務 (sudo systemctl restart mariadb)。
新增資料庫權限
假設外部電腦 IP 為 192.168.0.1,並且設定帳號為 root,密碼為 123456,可以管理全部資料庫,請參考以下指令進行設定。
                    
                        -- 建立帳號,並授與使用所有資料庫的所有權限
                        GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.1' IDENTIFIED BY '123456' WITH GRANT OPTION;

                        -- 更新系統權限表
                        FLUSH PRIVILEGES;
                    
                
詳細的帳號權限設定,可以參考以下文章:
開啟 3306 Port
                    
                        # 允許全部連線通過 3306 Port
                        $ ufw allow 3306

                        # [較安全作法]
                        # 僅允許來自 192.168.0.1 通過 3306 Port
                        $ ufw allow from 192.168.0.1 to any port 3306
                    
                
詳細的防火牆設定,可以參考以下文章:

參考資料