虛擬機 Linux MySQL 預設僅允許本地連線,遠程訪問需解決「用戶授權」與「網路防火牆」兩大阻礙。本文提供兩種完整解決方案並驗證連通性。
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
關鍵點: 'root'@'%' 中 % 代表任意主機,生產環境建議限制具體 IP 段 (如 'app_user'@'192.168.1.%')。
# 編輯 iptables 規則 vi /etc/sysconfig/iptables # 在 COMMIT 前新增 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT # 重載生效 service iptables restart # 驗證 iptables -L -n | grep 3306
mysql -h 192.168.16.128 -u root -pMyPassword
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'sy31214' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
同樣需配合防火牆開放 3306 埠。
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload firewall-cmd --list-ports
bind-address = 0.0.0.0 (在 my.cnf [mysqld] 區段)setsebool -P mysql_connect_any 1 或暫時關閉DELETE FROM mysql.user WHERE User='root' AND Host='%';CREATE USER 'app'@'10.0.0.%' IDENTIFIED BY 'StrongPass'; GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app'@'10.0.0.%';REQUIRE SSLmax_user_connectionsmysql.user 表