17. 在 Ubuntu 上架設安全的資料庫伺服器:MySQL 與 MariaDB 比較

在 Ubuntu 上架設安全的資料庫伺服器是建立可擴充且可靠的應用程式的關鍵基礎。無論您是部署動態 Web 應用程式還是管理複雜的企業工作負載,選擇正確的資料庫解決方案都至關重要。MySQL 和 MariaDB 是兩種最受歡迎的開源資料庫系統,以其效能、靈活性和可靠性而聞名。

在本指南中,我們將帶您逐步完成在 Ubuntu 伺服器上安裝、設定和保護 MySQL 和 MariaDB 的過程。此外,我們還將比較它們的功能,以協助您確定最適合您特定使用案例的選項。透過這種循序漸進的方法,您將能夠為您的應用程式架設一個安全而強大的資料庫環境。


往期文章:

01. Ubuntu Server 簡介 – SysOSX: AI & Cloud

02. 如何架設您的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud

04. 管理 Ubuntu Server 上的使用者和權限:完整指南 – SysOSX: AI & Cloud

05. Ubuntu Server 網路基礎:完整指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud

07.Ubuntu Server 修補與更新:完整指南 – SysOSX: AI & Cloud

08. 保護您的 Ubuntu Server:強化與防護的實用步驟 – SysOSX: AI & Cloud

09. Ubuntu 伺服器稽核與記錄

10. Ubuntu Server 系統監控工具:完整指南 – SysOSX: AI & Cloud

11. Ubuntu 伺服器集中式記錄:必讀指南 – SysOSX: AI & Cloud

12. Ubuntu Server 稽核與合規:最佳實務 – SysOSX: AI & Cloud

13. 為託管和 Web 應用程式架設您的 Ubuntu Server:終極指南 – SysOSX: AI & Cloud

14. 在一台 Ubuntu Server 上託管多個網站:實用技巧 – SysOSX: AI & Cloud

15. 管理 Ubuntu Server 上的儲存空間和磁碟:簡單指南 – SysOSX: AI & Cloud

16. 在 Ubuntu Server 上架設檔案共用服務:完整指南 – SysOSX: AI & Cloud



先決條件

開始之前,請確保符合下列條件:

  • Ubuntu Server:正在執行的 Ubuntu 執行個體(建議使用 20.04 或更高版本)。
  • 系統管理員存取權限:安裝和設定資料庫伺服器需要sudo權限。
  • 網際網路連線:下載套件和更新所需。

MySQL 與 MariaDB:主要差異

雖然 MySQL 和 MariaDB 同源,但近年來它們已經分化,提供了各自不同的功能。以下比較將協助您為自己的需求選擇合適的資料庫伺服器:

功能MySQLMariaDB
授權雙重授權(GPL 和專有授權)開源(GPL)
效能針對讀取密集型工作負載進行了最佳化讀寫工作負載的效能均有所提升
預設儲存引擎InnoDBAria(InnoDB 的替代品)
功能特性企業功能僅在付費版本中提供許多功能(例如執行緒集區、JSON 函數)都是開源的
相容性廣泛使用,並得到主要平台的支援與 MySQL 相容,但可能不支援某些專有的 MySQL 功能
複寫傳統複寫增強型複寫,支援 Galera Cluster
社群支援龐大的社群和企業支援選項強大的開源社群支援

建議:

  • 選擇MySQL(如果您需要企業級功能以及與專有工具的相容性)。
  • 選擇MariaDB(如果您更喜歡具有增強功能和效能的開源軟體)。

安裝 MySQL 或 MariaDB

步驟 1:更新套件存放庫

更新系統,以確保您使用的是最新的套件版本:

sudo apt update && sudo apt upgrade

步驟 2:安裝 MySQL 或 MariaDB

您可以根據自己的偏好安裝 MySQL 或 MariaDB。

安裝 MySQL:

sudo apt install mysql-server

安裝 MariaDB:

sudo apt install mariadb-server

步驟 3:驗證安裝

安裝完成後,確保資料庫伺服器正在執行:

對於 MySQL:

sudo systemctl status mysql

對於 MariaDB:

sudo systemctl status mariadb


設定資料庫伺服器

步驟 1:基本設定

編輯設定檔以最佳化效能和安全性。

對於 MySQL:

sudo nano /etc/mysql/my.cnf

對於 MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

需要調整的關鍵設定:

  • bind-address:將其設定為0.0.0.0(如果您想要遠端存取)。
  • max_connections:對於高流量應用程式,請增大此值。

進行變更後,重新啟動服務:

sudo systemctl restart mysql   # For MySQL
sudo systemctl restart mariadb # For MariaDB

步驟 2:測試資料庫伺服器

登入資料庫伺服器以確保其正常運作:

mysql -u root -p


保護您的資料庫伺服器

步驟 1:執行安全性指令碼

使用內建安全性指令碼來強化資料庫伺服器。

sudo mysql_secure_installation

依照提示執行下列操作:

  • 設定一個強大的 root 密碼。
  • 移除匿名使用者。
  • 停用遠端 root 登入。
  • 移除測試資料庫。

步驟 2:設定防火牆規則

使用下列工具限制對資料庫伺服器的存取:ufw:

sudo ufw allow from <your-ip-address> to any port 3306

將<your-ip-address>取代為需要存取的 IP 位址。

步驟 3:啟用 SSL/TLS

為了增強安全性,請啟用 SSL/TLS 連線。有關設定說明,請參閱MySQL 文件或MariaDB 文件。

(MySQL 範例)

  1. 產生憑證:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. 在設定中啟用:
[mysqld]  
ssl-ca = /var/lib/mysql/ca.pem  
ssl-cert = /var/lib/mysql/server-cert.pem  
ssl-key = /var/lib/mysql/server-key.pem  

步驟 4:安裝 Fail2Ban(可選)

sudo apt install fail2ban  

在下列檔案中為 MySQL/MariaDB 設定 jail 規則 /etc/fail2ban/jail.local.


管理您的資料庫伺服器

步驟 1:建立資料庫

為您的應用程式建立一個資料庫:

CREATE DATABASE my_application_db;

步驟 2:建立使用者並授予權限

建立一個使用者並指派權限:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

步驟 3:監控效能

# Analyze slow queries  
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log  

# Use MySQLTuner  
wget https://mysqltuner.pl -O mysqltuner.pl  
perl mysqltuner.pl  

步驟 4:備份和還原

定期備份對資料安全至關重要。

備份:

mysqldump -u root -p my_application_db > my_application_db.sql

還原:

mysql -u root -p my_application_db < my_application_db.sql

自動備份(Cron 工作)

# Daily backup at 2 AM  
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql  

結論

MySQL 和 MariaDB 都是在 Ubuntu 上架設資料庫伺服器的絕佳選擇。MySQL 以其企業級功能而聞名,而 MariaDB 則以其開源方法和效能增強而脫穎而出。依照本指南操作,您可以有效地安裝、設定、保護和管理資料庫伺服器。

下一期預告:
在我們的下一篇指南「掌握 Ubuntu 上的 LVM:為資料庫伺服器提供彈性儲存」中,您將學習如何:

  • 為動態資料庫儲存建立和管理邏輯磁碟區。
  • 在不停機的情況下調整磁碟大小。
  • 實作快照以實現一致性備份。

千萬不要錯過——追蹤我們的部落格以獲取最新動態!

發表留言