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

MySQL 用戶連線主機配置全解析:從 localhost 到通配符與 CIDR

     編輯:MySQL 資料庫相關知識

用戶帳號格式核心:'user_name@host_spec'

MySQL 用戶身份由「用戶名 + 來源主機」雙重標識,host_spec 支援多種匹配模式:

主機指定符完整語法

模式範例匹配範圍備註
精確主機名localhost, db.example.com單一主機DNS 反向解析需正確
IP 精確192.168.1.100單一 IPv4支援 IPv6(需方括號)
通配符 %%, 192.168.%任意 / 前綴匹配% 等同 user@%
域名後綴%.example.com該域名下所有主機需 DNS 解析
CIDR 網段 (3.23+)192.168.128.0/17前 17 位固定的 IP 範圍高效替代 192.168.%

授權實戰範例

-- 僅允許本機 root 連線(最安全)
GRANT ALL ON mydb.* TO 'root'@'localhost' IDENTIFIED BY 'strong_pwd';

-- 允許內網 192.168.1.0/24 任意主機
GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'192.168.1.0/24' IDENTIFIED BY 'pwd';

-- 開發人員從任意地點連線(僅開發庫,生產嚴禁)
GRANT ALL ON dev_db.* TO 'dev'@'%' IDENTIFIED BY 'dev_pwd';

-- 特定域名集群
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.internal.corp' IDENTIFIED BY 'repl_pwd';

安全最佳實踐

  1. 拒絕 root@%:生產環境 root 僅允許 localhost 或跳板機 IP。
  2. 業務帳號綁定應用伺服器 IP:使用 CIDR 精確到 /24 或 /28。
  3. 定期清理無用帳號:DROP USER 'old_user'@'%';
  4. 啟用 SSL:REQUIRE SSL 強制加密傳輸。
  5. 密碼策略:validate_password 元件強制複雜度與輪換。

排查連線被拒步驟

  1. 確認用戶存在:SELECT User, Host FROM mysql.user;
  2. 檢查防火牆/安全組 3306 端口。
  3. 驗證 bind-address = 0.0.0.0(或具體 IP)。
  4. 查看錯誤日誌:Access denied for user 'x'@'y' 中的 y 為實際來源 IP/主機名。
  5. DNS 反解問題:skip-name-resolve 可禁用主機名解析,純用 IP 匹配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved