MySQL 預設僅允許本地連線。本文涵蓋建立遠程帳號、修改綁定地址、本機防火牆、雲廠商安全組四大層面,確保遠程連線暢通無阻。
mysql -u root -p
-- 建立帳號,限定來源 IP 段(生產建議具體 IP)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass!2024';
-- 或允許任意 IP(僅測試環境)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass!2024';
-- 授權指定庫/表
GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;
切勿直接授權 root@%,極高風險。
# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
bind-address = 0.0.0.0 # 監聽所有網卡;或具體內網 IP
# skip-name-resolve # 避免 DNS 解析延遲(可選)
重啟生效:systemctl restart mysqld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
firewall-cmd --reload
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT
service iptables save
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306 remoteip=192.168.1.0/24
# 客戶端測試
mysql -h 192.168.1.109 -u app_user -p -P 3306
# 或使用 telnet/nc 測試埠通達性
telnet 192.168.1.109 3306
nc -zv 192.168.1.109 3306
bind-address 仍為 127.0.0.1。% 不包含 localhost,需額外建 user@localhost)。setsebool -P mysql_connect_any 1)。caching_sha2_password,舊驅動需改用 mysql_native_password 或升級驅動。