本機 mysql -h127.0.0.1 正常,遠程 mysql -h 報錯 ERROR 1130 (HY000): Host 'x.x.x.x' is not allowed to connect。
[mysqld]
# bind-address = 127.0.0.1 # 註解或改為 0.0.0.0
bind-address = 0.0.0.0 # 監聽所有介面
修改後 **重啟 MySQL**:systemctl restart mysqld 或 net stop mysql && net start mysql。
登入本機 MySQL:
mysql -u root -p
USE mysql;
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
最小權限原則:僅授權特定庫、特定表、特定操作 (SELECT/INSERT/UPDATE/DELETE)。
# 遠程機器
mysql -h -u app_user -p
# 成功進入提示符
# firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
AWS SG、阿里雲安全組、GCP Firewall **需放行 3306**,且**僅對應用伺服器 CIDR 開放**,禁止 0.0.0.0/0。
「監聽 0.0.0.0 + 專用帳號授權 + 防火牆限制來源 IP」三步驟,安全解決 MySQL 遠程連線問題。