在 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 同源,但近年來它們已經分化,提供了各自不同的功能。以下比較將協助您為自己的需求選擇合適的資料庫伺服器:
| 功能 | MySQL | MariaDB |
|---|---|---|
| 授權 | 雙重授權(GPL 和專有授權) | 開源(GPL) |
| 效能 | 針對讀取密集型工作負載進行了最佳化 | 讀寫工作負載的效能均有所提升 |
| 預設儲存引擎 | InnoDB | Aria(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 範例)
- 產生憑證:
sudo mysql_ssl_rsa_setup --uid=mysql
- 在設定中啟用:
[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:為資料庫伺服器提供彈性儲存」中,您將學習如何:
- 為動態資料庫儲存建立和管理邏輯磁碟區。
- 在不停機的情況下調整磁碟大小。
- 實作快照以實現一致性備份。
千萬不要錯過——追蹤我們的部落格以獲取最新動態!