步驟一:安裝 MySQL
sudo apt-get update
sudo apt-get install mysql-server
# 安裝過程可能提示設置 root 密碼 (新版本多無提示,需後續初始化)
步驟二:配置網絡綁定 (允許遠程訪問)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu 16.04+ 標準路徑
# 或舊版本
sudo vim /etc/mysql/my.cnf
# 找到 [mysqld] 區塊下的 bind-address
# 方案 A:註釋掉 (允許所有介面)
# bind-address = 127.0.0.1
# 方案 B:改為 0.0.0.0 (明確監聽所有介面,推薦)
bind-address = 0.0.0.0
# 重啟服務生效
sudo systemctl restart mysql
# 或舊版
sudo /etc/init.d/mysql restart
步驟三:授權遠程訪問用戶
# 登錄本地 root
mysql -u root -p
-- 創建專用應用用戶 (推薦,最小權限)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
-- 或允許 root 遠程 (極不推薦生產)
-- ALTER USER 'root'@'%' IDENTIFIED BY 'StrongPassword123!'; -- 8.0+
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- FLUSH PRIVILEGES;
授權命令詳解
*.*:第一個 * 代表所有數據庫,第二個 * 代表所有表
'user'@'%':% 通配符,表示任意主機/IP。生產建議限制:'user'@'192.168.1.%' 或 'user'@'10.0.0.5'
IDENTIFIED BY 'password':設置密碼 (8.0+ CREATE USER 時指定,GRANT 不再支持 IDENTIFIED BY)
WITH GRANT OPTION:允許該用戶將權限授予他人 (慎用)
FLUSH PRIVILEGES:刷新權限緩存,使修改立即生效
步驟四:防火牆放行 (關鍵!)
# UFW (Ubuntu 默認)
sudo ufw allow 3306/tcp
# 或僅允許特定應用服務器 IP 段
sudo ufw allow from 192.168.1.0/24 to any port 3306
# iptables (底層)
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
步驟五:驗證遠程連接
# 客戶端機器
mysql -h -u app_user -p
# 輸入密碼,成功進入交互模式即配置通過
# 或使用 GUI 工具
# Navicat / DBeaver / DataGrip / MySQL Workbench
# Host: , Port: 3306, User: app_user, Password: ******
安全加固清單 (生產環境必做)
sudo mysql_secure_installation
# 依次操作:
# 1. 設置驗證密碼插件 (建議 Y,強制密碼複雜度)
# 2. 修改 root 密碼 (若未設置或過簡單)
# 3. 移除匿名用戶 (Y)
# 4. 禁止 root 遠程登錄 (Y) -- 關鍵!
# 5. 移除 test 數據庫 (Y)
# 6. 重新加載權限表 (Y)