首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

虛擬機 Linux MySQL 遠程連線失敗兩大解決方案:授權配置與防火牆開放

     編輯:MySQL 資料庫相關知識

虛擬機 Linux MySQL 預設僅允許本地連線,遠程訪問需解決「用戶授權」與「網路防火牆」兩大阻礙。本文提供兩種完整解決方案並驗證連通性。

方案一:標準授權 + iptables 開放埠口 (CentOS 6/7 通用)

1. 建立遠程授權用戶

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.%')。

2. 開放防火牆 3306 埠

# 編輯 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

3. 遠程驗證

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 埠。

三、CentOS 7 firewalld 現代做法

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-ports

四、雲服務器額外檢查 (AWS/Azure/阿里雲等)

  • 安全組/防火牆規則:入站規則開放 TCP 3306
  • MySQL 綁定地址:bind-address = 0.0.0.0 (在 my.cnf [mysqld] 區段)
  • SELinux:setsebool -P mysql_connect_any 1 或暫時關閉

五、安全加固建議 (生產環境必做)

  1. 禁用 Root 遠程登入:DELETE FROM mysql.user WHERE User='root' AND Host='%';
  2. 建立專用應用帳戶:CREATE USER 'app'@'10.0.0.%' IDENTIFIED BY 'StrongPass'; GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app'@'10.0.0.%';
  3. 啟用 SSL 連線:REQUIRE SSL
  4. 限制最大連線數:max_user_connections
  5. 定期審計 mysql.user 表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved