預設 MySQL 僅允許 localhost 連線。開放遠程存取需完成三步驟:建立遠程帳號、調整 bind-address、重啟服務。本文另補充字元集設定與 Debian 維護帳號說明。
登入本機 MySQL:
mysql -u root -p
授權語法:
GRANT 權限清單 ON 資料庫.表 TO '用戶'@'主機' IDENTIFIED BY '密碼';
FLUSH PRIVILEGES;
| 需求 | 指令 |
|---|---|
| 特定 IP、特定表、特定權限 | GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON vtdc.employee TO 'joe'@'192.168.1.104' IDENTIFIED BY '123'; |
| 特定 IP、全庫全權限 | GRANT ALL PRIVILEGES ON vtdc.* TO 'joe'@'10.163.225.87' IDENTIFIED BY '123'; |
| 任意 IP、全域全權限(生產環境慎用) | GRANT ALL PRIVILEGES ON *.* TO 'joe'@'%' IDENTIFIED BY '123'; |
| 本機 root 全權限 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123'; |
說明:
% 代表任意主機;亦可用具體 IP、主機名、網域。CREATE USER ... IDENTIFIED BY ... 再 GRANT ...,避免隱式建立帳號。vim /etc/mysql/my.cnf # 或 /etc/my.cnf
# 找到 [mysqld] 區段
# bind-address = 127.0.0.1 ← 註解或改為 0.0.0.0
# bind-address = 0.0.0.0 # 監聽所有介面
systemctl restart mysqld # systemd
# 或
service mysql restart # SysVinit
vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
重啟後執行 SHOW VARIABLES LIKE 'character_set%'; 驗證。
Debian 系統安裝 MySQL 時會自動建立 debian-sys-maint 帳號(密碼存於 /etc/mysql/debian.cnf),供 mysqlcheck、logrotate、啟停腳本使用。請勿刪除或修改密碼,否則系統維護任務會失敗。
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT)。SELECT user, host FROM mysql.user;)。useSSL=false&allowPublicKeyRetrieval=true(MySQL 8.0+)。遠程連線核心在於「帳號@主機」匹配與 bind-address 設定。生產環境建議:最小權限原則、強制 SSL、限制來源 IP、定期輪換密碼。