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

MySQL 開啟遠程訪問授權完整步驟:從 host 表到 GRANT 實戰

     編輯:MySQL 資料庫相關知識

核心原理

MySQL 權限系統基於 user 表的 Host、User、plugin、authentication_string 四要素匹配。遠程訪問需:
1. 資料庫監聽非 127.0.0.1(bind-address=0.0.0.0 或註解掉)
2. 防火牆放行 3306
3. 目標帳號存在 Host='%' 或具體 IP 的記錄
4. GRANT 賦予對應權限

操作步驟

1. 登入並檢查現狀

mysql -u root -p
USE mysql;
SELECT User, Host, plugin FROM user;

2. 確保存在通配符 Host 記錄

-- 若無 root@% 則建立
UPDATE user SET Host = '%' WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

3. 授權語法

-- 任意主機 root 完整權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'strong_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 指定 IP 僅讀權限
GRANT SELECT ON mydb.* TO 'readonly'@'192.168.1.100' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

4. 驗證

SELECT Host, User FROM user WHERE User IN ('root','readonly');
-- 應看到 root@% 和 readonly@192.168.1.100

版本差異注意

版本密碼欄位建議語法
5.6 及以下PasswordIDENTIFIED BY 'pwd' 兼容
5.7.6+authentication_stringALTER USER ... IDENTIFIED BY 或 CREATE USER ... IDENTIFIED BY 後 GRANT
8.0+authentication_stringCREATE USER ... IDENTIFIED WITH caching_sha2_password BY 'pwd'

安全加固清單

  1. 生產環境禁用 root 遠程,建立專用運維帳號
  2. 最小權限原則:讀寫分離、按庫授權
  3. 強密碼 + 定期輪換 + validate_password 插件
  4. 防火牆/安全組僅放行應用伺服器 IP 段
  5. 啟用 SSL 加密傳輸:REQUIRE SSL
  6. 審計登入日誌,異常 IP 告警封禁

故障快速排查

  • ERROR 1130 (HY000): Host 'x.x.x.x' is not allowed to connect → Host 表無對應記錄
  • ERROR 1045 (28000): Access denied → 密碼錯誤或 plugin 不匹配
  • 連線逾時 → 防火牆/雲安全組/bind-address

授權三部曲:改綁定 → 開防火牆 → 授權限,缺一不可。

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