預設 MySQL 僅允許本地連線,當應用與資料庫部署在不同伺服器時,必須開啟遠程訪問權限並放行網路埠。
mysql -u root -p
USE mysql; UPDATE user SET host = '%' WHERE user = 'root'; SELECT host, user FROM user; -- 確認變更 FLUSH PRIVILEGES;
說明:
% 代表允許任意 IP 連線(生產環境建議限制具體 IP)% 替換為該 IP-- 建立帳號並授權遠程連線 CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!'; GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%'; FLUSH PRIVILEGES;
vi /etc/sysconfig/iptables
icmp-host-prohibited 拒絕規則之前插入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i eth0 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
# 客戶端測試 mysql -h 192.168.x.x -u root -p # 或使用 telnet 測試埠通達性 telnet 192.168.x.x 3306
bind-address = 0.0.0.0(my.cnf)監聽所有介面REQUIRE SSLmysql.user 表,移除無用帳號