首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

解決虛擬機 Linux MySQL 無法遠程訪問:授權配置與 iptables 防火牆開放 3306 端口

     編輯:MySQL 綜合教學

虛擬機(VMware/VirtualBox)內 Linux MySQL 預設僅允許本地連接,遠程訪問需同時解決資料庫授權與系統防火牆兩層限制。

一、資料庫層:授權遠程訪問用戶

# 1. 進入 MySQL 控制台
mysql -u root -p

# 2. 授權 root 遠程訪問(% 代表任意 IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass123!' WITH GRANT OPTION;

# 3. 刷新權限
FLUSH PRIVILEGES;

# 4. 驗證用戶宿主
SELECT User, Host FROM mysql.user WHERE User='root';
# 應顯示 root | % 及 root | localhost

安全建議:生產環境禁止 root 遠程登入,應建立專用業務帳號並限制具體 IP:

CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'AppPass456@';
GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;

二、系統層:iptables 開放 3306 端口

# 1. 編輯規則文件
vi /etc/sysconfig/iptables

# 2. 在 COMMIT 前插入(建議放在 22 端口規則後)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

# 完整示例:
*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 -m state --state NEW -m tcp -p tcp --dport 22 -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
# 3. 重啟防火牆生效
service iptables restart

# 4. 驗證規則
iptables -L -n -v | grep 3306

三、雲服務器/虛擬機網絡層額外檢查

環境檢查項
阿里雲/騰訊雲/AWS安全組/安全組規則入站開放 TCP 3306
VMware NAT 模式虛擬網絡編輯器 → NAT 設置 → 端口轉發 3306
VirtualBox網絡 → 端口轉發 → 宿主 3306 → 客體 3306
Docker 容器-p 3306:3306 映射,容器內 bind-address=0.0.0.0

四、MySQL 配置文件綁定地址

# /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
bind-address = 0.0.0.0  # 監聽所有介面,預設 127.0.0.1
# 修改後需重啟
service mysqld restart

五、遠程連接測試

# 宿主機/其他機器
mysql -h 192.168.16.128 -u root -p
# 或使用 Navicat、DataGrip 等 GUI 工具測試

六、常見排查清單

  1. telnet 192.168.x.x 3306 通 → 網絡/防火牆通,檢查 MySQL 授權/bind-address。
  2. telnet 不通 → 檢查 iptables、雲安全組、虛擬機網絡模式、MySQL 進程是否監聽 netstat -ntlp | grep 3306。
  3. 報錯 Host 'x.x.x.x' is not allowed to connect → 權限表無對應 Host,重新 GRANT。
  4. 報錯 Authentication plugin 'caching_sha2_password' not supported → 客戶端版本過低,改用 mysql_native_password 或升級驅動。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved