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

MySQL 僅能 localhost 連線、IP 連不上?授權表與防火牆雙重檢查

     編輯:MySQL 資料庫相關知識

現象:本機連得上,遠程連不上

mysql -u root -p 本機正常,但 mysql -h 192.168.x.x -u root -p 報 ERROR 1130 (HY000): Host '192.168.x.x' is not allowed to connect to this MySQL server。經典的「授權表缺遠程 Host」問題。

核心解決:授權表新增遠程 Host

-- 1. 登入本機 MySQL
mysql -u root -p

-- 2. 授權所有 IP(% 通配符)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password';

-- 3. 刷新權限生效
FLUSH PRIVILEGES;

-- 4. 重啟服務(視版本而定,通常無需重啟)
systemctl restart mysqld   # 或 service mysqld restart

原理解析

MySQL 權限系統按 user, host 雙主鍵匹配。安裝預設只建立 root@localhost、root@127.0.0.1、root@::1。遠程 IP 嘗試連線時,無匹配行 → 拒絕。新增 root@'%' 即允許任意 IP(生產環境建議限制具體 IP/網段)。

輔助檢查:防火牆與 bind-address

項目檢查命令正確狀態
防火牆 3306firewall-cmd --list-ports / iptables -nL含 3306/tcp
MySQL 監聽地址netstat -anp | grep 3306 / ss -lntp0.0.0.0:3306 或 :::3306(非 127.0.0.1)
配置文件 bind-addressgrep bind-address /etc/my.cnf註釋掉或設 0.0.0.0
SELinux/AppArmorgetenforce / aa-statusPermissive 或已放行 mysqld

安全最佳實踐

  1. 不使用 root 遠程登入:建立專用應用帳號 app_user@'192.168.1.%',僅授權所需庫/表。
  2. 限制來源 IP:GRANT ... TO 'user'@'192.168.1.0/255.255.255.0'(CIDR 寫法 8.0+ 支援)。
  3. 啟用 SSL:REQUIRE SSL 強制加密傳輸。
  4. 定期審計:SELECT user, host FROM mysql.user; 檢查異常帳號。

三分鐘搞定授權表、防火牆、bind-address 三重檢查,遠程連線即刻通暢。記住:最小權限原則永遠是第一道防線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved