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

MySQL 遠程訪問配置:綁定地址、授權、防火牆全攻略

     編輯:MySQL 資料庫相關知識

MySQL 遠程連不上?三大核心配置逐項排查

1. 修改綁定地址(最常見原因)

預設 bind-address = 127.0.0.1 僅監聽本地回環。

# 编辑 /etc/my.cnf 或 /etc/mysql/my.cnf
[mysqld]
# bind-address = 127.0.0.1  # 註釋掉或改為
bind-address = 0.0.0.0      # 監聽所有網卡
# 或指定具體 IP
bind-address = 192.168.1.100

修改後 必須重啟 MySQL:systemctl restart mysqld。

2. 用戶授權(兩種方式)

方式一:改表法(舊版適用)

mysql -u root -p
USE mysql;
UPDATE user SET host = '%' WHERE user = 'root';
FLUSH PRIVILEGES;

方式二:GRANT 授權法(推薦,5.0+)

-- 允許 kevin 從任意 IP 訪問所有庫
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

-- 僅允許特定 IP
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword';
  • % = 任意主機
  • WITH GRANT OPTION 允許該用戶再授權他人(生產慎用)
  • MySQL 8.0+ 語法分離:CREATE USER ...; GRANT ...;

3. 防火牆放行 3306

# CentOS 7+ firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

驗證清單

  1. 服務端:netstat -ntlp | grep 3306 顯示 0.0.0.0:3306 或指定 IP
  2. 客戶端:telnet 3306 連通
  3. 客戶端:mysql -h -u kevin -p 登入成功

安全加固建議

  • 禁止 root 遠程登入:GRANT ... TO 'app_user'@'%'; 應用專用賬號
  • 限制來源 IP 段:'app_user'@'192.168.1.%'
  • 啟用 SSL 連接:REQUIRE SSL
  • 定期審計 mysql.user 表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved