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

MySQL「localhost 能連、IP 不能連」一條 GRANT 解決:授權與防火牆雙檢查

     編輯:MySQL 綜合教學

經典新手坑:本機 mysql -u root -p 正常,改用 mysql -h 192.168.x.x -u root -p 卻報 Host '192.168.x.x' is not allowed to connect。根因是 MySQL 權限系統按 『用戶@主機』 區分帳號,root@localhost 與 root@192.168.x.x 互不相干。一條 GRANT + FLUSH PRIVILEGES 即可解決。

核心修復命令


-- 授予所有庫、所有表、所有權限給指定 IP 的用戶
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'IP地址' IDENTIFIED BY '密碼';

-- 立即生效
FLUSH PRIVILEGES;

參數詳細說明

子句示例含義
ALL PRIVILEGESALL PRIVILEGES / SELECT,INSERT,UPDATE權限範圍,生產環境建議最小權限
*.**.* / db_name.* / db_name.tbl_name對象範圍:所有庫.所有表 / 指定庫.所有表 / 指定庫.指定表
TO 'user'@'host''app_user'@'192.168.1.%'帳號@主機,支援通配符 %(同網段)、具體 IP、域名
IDENTIFIED BYIDENTIFIED BY 'StrongP@ssw0rd'設定密碼,5.7+ 建議配合 ALTER USER ... IDENTIFIED BY

進階授權最佳實踐

  • 網段授權:'app_user'@'192.168.1.%' 覆蓋整個 C 段,避免 IP 變更維護成本
  • 最小權限:讀寫分離帳號僅 SELECT,INSERT,UPDATE,DELETE;遷移帳號加 CREATE,ALTER,DROP,INDEX;監控帳號僅 PROCESS,REPLICATION CLIENT
  • SSL 強制:GRANT ... REQUIRE SSL 強制加密傳輸
  • 資源限制:WITH MAX_QUERIES_PER_HOUR 1000 MAX_CONNECTIONS_PER_HOUR 50

配套檢查清單

  1. SELECT Host,User FROM mysql.user; 確認目標 Host 列包含目標 IP/通配符
  2. netstat -tlnp | grep 3306 確認監聽 0.0.0.0:3306(非 127.0.0.1)
  3. firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload 開放埠
  4. mysql -h 目標IP -u 用戶名 -p 遠端驗證
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved