在 Ubuntu 上安裝並設定 MariaDB 的完整指南|適合初學者的詳細說明

目次

1. 簡介

MariaDB 是一個開源的關係型資料庫管理系統(RDBMS),它是從 MySQL 分支(派生)而來。近年來,在利用資料庫的專案中,MariaDB 被廣泛採用,由於其性能和可靠性,受到許多企業和開發者的支持。

MariaDB 的特點與優點

MariaDB 最大的特點是,在保持與 MySQL 高度相容性的同時,也進行了獨立的演進。以下列出 MariaDB 的主要優點。

  • 開源授權: MariaDB 是以 GPL(GNU General Public License)開發的,可以免費使用。
  • 高度相容性: 將 MySQL 中使用的資料或應用程式遷移到 MariaDB 時,不需要大幅修改。
  • 強化安全性: MariaDB 預設的安全性設定已強化,可以建構高度安全的環境。
  • 可擴展性: 已針對大規模資料和高負載系統進行最佳化。

在 Ubuntu 中使用 MariaDB 的優點

Ubuntu 是一個在許多伺服器環境中使用的 Linux 發行版。在 Ubuntu 中使用 MariaDB 可以獲得以下優點。

  1. 穩定性: Ubuntu 的 LTS(長期支援)版本保證了穩定性和長期的安全性更新。
  2. 套件管理的簡易性: 使用 apt 指令,可以簡單地安裝或更新 MariaDB。
  3. 廣泛的支援: Ubuntu 和 MariaDB 的組合在許多開發者中使用,因此容易在線上文件或論壇中找到問題解決資訊。

本文的目標

本文將詳細說明如何在 Ubuntu 環境中安裝 MariaDB,以及基本的設定、操作方法和疑難排解。目標是讓從初學者到中級者的各個層級讀者,透過本指南能夠有效利用 MariaDB。

2. 必要的準備

在將 MariaDB 安裝到 Ubuntu 之前,先做好必要的準備,就能順利推進作業。本節將詳細說明推薦環境、依賴套件的確認以及儲存庫的更新方法。

推薦環境

為了讓 MariaDB 高效運作,建議以下環境。

  • Ubuntu 的版本:
  • 建議使用受支援的 LTS 版本(如 20.04、22.04 等)。
  • 硬體需求:
  • 記憶體: 最低 512 MB(建議 2 GB 以上)
  • 磁碟容量: 500 MB 以上的可用空間(依據資料量可能需要更多)
  • CPU: 1 GHz 以上的處理器(建議多核心)

滿足這些需求,即可穩定運行 MariaDB。

依賴套件與系統需求

安裝 MariaDB 需要一些依賴套件。請執行以下指令,事先確認依賴關係並安裝所需套件。

sudo apt update
sudo apt install -y software-properties-common gnupg

這樣即可新增儲存庫並管理 GPG 金鑰。另外,若使用 curlwget,也建議事先安裝。

sudo apt install -y curl wget

儲存庫的更新

為取得最新套件資訊,首先更新系統的儲存庫。請執行以下指令。

sudo apt update
sudo apt upgrade -y
  • apt update: 從目前的儲存庫取得最新的套件清單。
  • apt upgrade: 將系統已安裝的套件升級至最新版本。

SSH 連線的確認(遠端伺服器的情況)

若在遠端伺服器上安裝 MariaDB,請事先確認 SSH 連線穩定。可依以下方式檢查連線。

ssh 使用者名稱@伺服器的 IP 位址

為避免遠端環境設定錯誤,安裝作業期間請注意不要中斷連線。

3. MariaDB 的安裝

在 Ubuntu 上安裝 MariaDB,有使用標準儲存庫或官方儲存庫的方法。在這裡,我們將詳細說明各自的步驟。

從標準儲存庫安裝

包含在 Ubuntu 標準儲存庫中的 MariaDB 是注重穩定性的版本。請按照以下步驟進行安裝。

步驟

  1. 更新儲存庫。
   sudo apt update
  1. 安裝 MariaDB。
   sudo apt install -y mariadb-server mariadb-client
  1. 安裝完成後,確認 MariaDB 服務的狀態。
   sudo systemctl status mariadb
  1. 如果 MariaDB 服務未自動啟動,請使用以下指令手動啟動。
   sudo systemctl start mariadb
  1. 設定服務自動啟動。
   sudo systemctl enable mariadb

優點

  • 使用標準儲存庫,因此容易獲得 Ubuntu 的官方支援。
  • 可以透過簡單的步驟進行安裝。

使用官方儲存庫進行安裝

如果想要安裝最新版本的 MariaDB,請使用官方儲存庫。此方法可以利用更新的功能或效能改善。

步驟

  1. 新增 MariaDB 的官方儲存庫。
   sudo apt install -y software-properties-common
   sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.aarnet.edu.au/pub/mariadb/repo/10.6/ubuntu focal main'
  1. 新增儲存庫的 GPG 金鑰。
   sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
  1. 更新套件清單。
   sudo apt update
  1. 安裝 MariaDB。
   sudo apt install -y mariadb-server mariadb-client
  1. 確認服務狀態並啟動。
   sudo systemctl status mariadb
   sudo systemctl start mariadb
   sudo systemctl enable mariadb

注意事項

  • 使用官方儲存庫時,可能與 Ubuntu 的標準儲存庫發生衝突。如果安裝過程中發生錯誤,請移除衝突的套件。

安裝後的確認

MariaDB 安裝完成後,請使用以下指令進行動作確認。

版本確認

mysql --version

連接到 MariaDB

sudo mysql

如果能夠正常連接到 MariaDB 的主控台,則安裝成功。

4. 初始設定與安全性強化

MariaDB 安裝之後,需要強化安全性並進行基本設定。本節將詳細說明初始設定與推薦的安全性強化步驟。

mysql_secure_installation 的執行

MariaDB 安裝直後,預設設定狀態下安全性風險很高。請執行以下指令進行簡單的安全性設定。

指令的執行

sudo mysql_secure_installation

各提示的說明

  1. 輸入目前的 root 密碼
  • 首次情況下未設定,因此按 Enter 鍵。
  1. 設定 root 密碼
  • 設定強力的密碼。例:長度 12 個字元以上,結合英數字元或符號。
  1. 刪除匿名使用者
  • 推薦:Y(刪除匿名使用者)
  1. 停用遠端連線
  • 推薦:Y(停用 root 使用者的遠端登入)
  1. 刪除測試資料庫
  • 推薦:Y(刪除不必要的預設資料庫)
  1. 重新載入權限表格
  • 推薦:Y(立即反映設定變更)

這樣就完成了基本的安全性設定。

認證外掛程式的設定

MariaDB 預設使用 unix_socket 外掛程式進行 root 使用者的認證。此設定雖然方便,但從其他工具或指令碼連線時可能會產生問題。視需要切換認證方式。

確認目前的認證方式

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

認證方式的變更(例:變更為 mysql_native_password

  1. 連線至 MariaDB 主控台。
   sudo mysql
  1. 變更外掛程式。
   ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '新密碼';
   FLUSH PRIVILEGES;
  1. 確認變更。
   SELECT user, host, plugin FROM mysql.user;

字元編碼設定

適當設定資料庫的字元編碼,可以防止字元亂碼或資料不一致。一般推薦使用 utf8mb4

設定方法

  1. 編輯設定檔案。
   sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  1. 新增或編輯以下行。
   [mysqld]
   character-set-server=utf8mb4
   collation-server=utf8mb4_general_ci
  1. 重新啟動 MariaDB。
   sudo systemctl restart mariadb
  1. 確認設定。
   SHOW VARIABLES LIKE 'character_set%';

密碼原則的設定

為了維持堅固的安全性,推薦設定密碼原則。

設定步驟

  1. 啟用 validate_password 外掛程式。
   sudo mysql -e "INSTALL PLUGIN validate_password SONAME 'validate_password.so';"
  1. 確認或變更密碼原則。
   SHOW VARIABLES LIKE 'validate_password%';
   SET GLOBAL validate_password.length = 12;
   SET GLOBAL validate_password.mixed_case_count = 1;
   SET GLOBAL validate_password.number_count = 1;
   SET GLOBAL validate_password.special_char_count = 1;

5. 基本操作

安裝 MariaDB 並強化初始設定與安全性之後,讓我們學習基本操作方法。本節將說明 MariaDB 服務的管理、資料庫的建立、使用者的設定、備份與還原。

MariaDB 服務的管理

以下顯示操作 MariaDB 服務的基本指令。

服務的啟動

要啟動 MariaDB 服務,請執行下列指令。

sudo systemctl start mariadb

服務的停止

若要停止服務,請使用下列指令。

sudo systemctl stop mariadb

服務的重新啟動

若需在變更設定後重新啟動 MariaDB,請執行下列指令。

sudo systemctl restart mariadb

服務狀態的確認

要確認 MariaDB 是否正常運作,請執行下列指令。

sudo systemctl status mariadb

資料庫的建立

要建立資料庫,請連線至 MariaDB 主控台。

連線至主控台

使用下列指令連線至 MariaDB。

sudo mysql

資料庫的建立

CREATE DATABASE 指令用來建立新的資料庫。

CREATE DATABASE sample_db;

確認已建立的資料庫

使用下列指令可確認資料庫清單。

SHOW DATABASES;

使用者的建立與權限設定

在 MariaDB 中,可以建立新的使用者,並授予特定資料庫的權限。

使用者的建立

使用下列指令建立新的使用者。

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';

權限的授予

授予已建立的使用者特定資料庫的所有權限。

GRANT ALL PRIVILEGES ON sample_db.* TO 'new_user'@'localhost';

授予權限後,需要重新載入權限。

FLUSH PRIVILEGES;

使用者與權限的確認

要確認目前的使用者與權限,請使用下列指令。

SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'new_user'@'localhost';

備份與還原

在 MariaDB 中,為了保護資料,定期執行備份非常重要。

備份的建立

mysqldump 指令用來備份資料庫。

mysqldump -u root -p sample_db > sample_db_backup.sql

備份的還原

使用備份檔案還原資料庫。

mysql -u root -p sample_db < sample_db_backup.sql

6. 疑難排解

使用 MariaDB 時,在安裝、設定或操作過程中,可能會發生錯誤或問題。本節將說明常見的問題及其解決方案。

MariaDB 無法啟動的情況

症狀

試圖啟動 MariaDB 時,發生錯誤導致服務無法啟動。

解決方案

  1. 確認服務狀態
   sudo systemctl status mariadb

如果狀態顯示為「failed」,請確認錯誤訊息。

  1. 確認錯誤記錄
    MariaDB 的錯誤記錄儲存於以下位置。
   sudo cat /var/log/mysql/error.log

確認記錄以特定具體的錯誤內容。

  1. 確認磁碟容量
    MariaDB 會使用磁碟來儲存記錄檔或資料。如果空餘容量不足,服務可能無法啟動。
   df -h

必要時,請刪除不必要的檔案以確保空餘容量。

  1. 修正設定檔
    如果設定有誤,請確認 MariaDB 的設定檔(/etc/mysql/mariadb.conf.d/50-server.cnf)。
  2. 重新啟動服務
    修正問題後,重新啟動 MariaDB。
   sudo systemctl restart mariadb

發生權限錯誤的情況

症狀

特定使用者試圖存取資料庫時,顯示「Access denied for user」錯誤。

解決方案

  1. 確認使用者權限
    連線至 MariaDB 並確認使用者權限。
   SHOW GRANTS FOR '使用者名稱'@'主機名稱';
  1. 授予適當權限
    授予必要的權限。
   GRANT ALL PRIVILEGES ON 資料庫名稱.* TO '使用者名稱'@'主機名稱';
   FLUSH PRIVILEGES;
  1. 確認主機名稱設定
    請確認使用者連線的主機(例如:localhost 或 %)是否正確。

資料庫連線錯誤

症狀

無法從客戶端應用程式連線至 MariaDB。

解決方案

  1. 確認 MariaDB 是否允許遠端連線
    預設情況下,MariaDB 僅允許本地主機連線。要允許遠端連線,請修正 bind-address
   sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

請確認或修正以下行。

   bind-address = 0.0.0.0
  1. 防火牆設定
    請確認 MariaDB 使用的連接埠(預設:3306)是否開啟。
   sudo ufw allow 3306
   sudo ufw reload
  1. 遠端連線的使用者設定
    建立或設定允許從遠端主機連線的使用者。
   CREATE USER '使用者名稱'@'%' IDENTIFIED BY '密碼';
   GRANT ALL PRIVILEGES ON 資料庫名稱.* TO '使用者名稱'@'%';
   FLUSH PRIVILEGES;

效能問題

症狀

MariaDB 的查詢緩慢,或伺服器負載過高。

解決方案

  1. 查詢最佳化
  • 為了特定緩慢查詢,請啟用緩慢查詢記錄。
    ini slow_query_log = 1 long_query_time = 2
  • 確認記錄:
    bash sudo cat /var/log/mysql/slow.log
  1. 新增索引
  • 透過為經常使用的查詢新增適當索引,提升搜尋速度。
    sql CREATE INDEX idx_column ON 表格名稱(欄位名稱);
  1. 使用快取
    在 MariaDB 的設定檔中啟用查詢快取。
   query_cache_size = 16M
   query_cache_type = 1
  1. 監視伺服器資源
    使用 tophtop 指令確認 CPU 或記憶體使用率,並視需要強化伺服器資源。

7. 常見問題 (FAQ)

在這裡,我們彙整了在使用 Ubuntu 上使用 MariaDB 時常見的問題及其解答。這些問答提供給初學者到中級使用者的有用資訊。

Q1: MariaDB 和 MySQL 的差異是什麼?

MariaDB 是從 MySQL 分支出來的開源關係型資料庫管理系統(RDBMS)。以下是主要差異:

  • 授權: MariaDB 採用 GPL(GNU General Public License),比 MySQL 更徹底地實踐開源理念。
  • 功能: MariaDB 比 MySQL 更快引入新功能,查詢最佳化和外掛已強化。
  • 開發體制: MySQL 由 Oracle 主導,而 MariaDB 則由獨立的社群推動開發。

Q2: 如何安裝 MariaDB 的特定版本?

使用 MariaDB 的官方儲存庫,即可安裝特定版本。以下是手續範例(安裝版本 10.6 的情況):

  1. 新增 MariaDB 官方儲存庫:
   sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.aarnet.edu.au/pub/mariadb/repo/10.6/ubuntu focal main'
  1. 更新套件清單並安裝:
   sudo apt update
   sudo apt install -y mariadb-server

Q3: mysql_secure_installation 的設定內容不太清楚。

mysql_secure_installation 是用來輕鬆進行 MariaDB 安全性設定的腳本。以下說明主要設定內容:

  • root 密碼的設定: 預設未設定,因此務必設定強力的密碼。
  • 匿名使用者的刪除: 為了提升安全性,建議刪除匿名使用者。
  • 測試資料庫的刪除: 刪除 MariaDB 中包含的測試用資料庫。
  • 權限表格的重新載入: 立即反映設定變更。

Q4: 將字元編碼設定為 utf8mb4 的理由是什麼?

utf8mb4 是 UTF-8 的完整實作,能支援包含表情符號和特殊字元的所有字元。透過此設定,可防止字元亂碼或資料遺失的風險。

設定範例:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

Q5: 如何改善 MariaDB 的效能?

要提升 MariaDB 的效能,請考量以下事項:

  • 查詢的最佳化: 啟用慢速查詢記錄,以找出效能不佳的查詢。
  • 索引的活用: 在經常使用的欄位建立索引。
  • 快取設定: 在 MariaDB 的設定檔案中適當設定查詢快取,以儲存可重複使用的結果。
  • 資源的監控: 監控 CPU 和記憶體的使用情況,以減輕伺服器的負載。

Q6: 有方法可以自動化 MariaDB 的備份嗎?

是的,可以使用 cron 來自動化備份。以下是每天凌晨 3 點執行備份的範例:

  1. 建立備份腳本:
   nano /usr/local/bin/backup_mariadb.sh

內容:

   #!/bin/bash
   mysqldump -u root -p'password' --all-databases > /backup/mariadb_backup_$(date +%F).sql
  1. 賦予腳本執行權限:
   chmod +x /usr/local/bin/backup_mariadb.sh
  1. 設定 Cron 工作:
   crontab -e

新增以下內容:

   0 3 * * * /usr/local/bin/backup_mariadb.sh

8. 總結與下一步驟

本文詳細說明了在 Ubuntu 上安裝 MariaDB,以及安全且高效運行的步驟。以下簡要回顧每個區段所學的內容。

文章要點摘要

  1. 簡介
  • 說明了 MariaDB 的特點以及在 Ubuntu 上使用的優點。
  1. 必要的準備
  • 確認了安裝前的推薦環境、依賴套件、儲存庫更新步驟。
  1. MariaDB 的安裝
  • 學習了使用標準儲存庫和官方儲存庫的安裝方法。
  1. 初始設定與安全性強化
  • mysql_secure_installation 的安全性設定、認證外掛設定、字元編碼變更方法。
  1. 基本操作
  • 學習了服務的管理、資料庫的建立、使用者與權限的設定、備份與還原。
  1. 疑難排解
  • 確認了啟動錯誤、權限錯誤、連線錯誤、效能問題的解決方案。
  1. FAQ(常見問題)
  • 詳細說明了 MariaDB 的基本知識、便利的設定方法、備份的自動化。

下一步驟

一旦能夠基本操作 MariaDB 後,透過學習更進階的功能與設定,即可建構更高效且穩固的資料庫環境。

學習複寫

MariaDB 的複寫功能,即可確保資料的冗餘性,並提升可用性。建議學習主從複寫(Master-Slave)或多主複寫(Master-Master)的設定方法。

效能調整

當資料量或流量增加時,效能可能成為課題。學習查詢的最佳化、索引的活用、伺服器設定的調整等,以最大限度發揮 MariaDB 的效能。

安全性的進一步強化

  • 使用 SSL/TLS 的安全連線設定
  • 日誌監視與資料加密的導入

MariaDB 的進階功能

  • 使用 Galera Cluster 的高可用性叢集
  • 活用 JSON 資料型、全文搜尋功能等最新功能

參考連結

為了進一步深化學習,請活用以下資源。