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

MySQL 遠程訪問用戶配置:GRANT 授權與 host 表修改兩大法

     編輯:MySQL 資料庫相關知識

核心概念

MySQL 權限系統核心在 mysql.user 表的 Host 欄位:

  • localhost:僅允許本機 Unix socket / 127.0.0.1 連線。
  • %:允許任意 IP 連線(通配符)。
  • 具體 IP/主機名:精確匹配來源。

方法一:GRANT 授權法(標準、推薦)

-- 建立可遠程登入的用戶
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

細粒度授權範例:

GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'readonly'@'192.168.1.%';
GRANT SELECT ON mydb.log_table TO 'monitor'@'10.0.0.5';

方法二:直接修改 user 表(舊版快速改法)

USE mysql;
UPDATE user SET Host = '%' WHERE User = 'existing_user';
FLUSH PRIVILEGES;
警告: MySQL 5.7+ authentication_string 加密方式變更,直接 UPDATE 可能導致密碼驗證失敗,建議改用 RENAME USER 或重建用戶。

驗證配置生效

SELECT Host, User, authentication_string FROM mysql.user WHERE User = 'app_user';
-- 預期輸出
+------+----------+-------------------------------------------+
| Host | User     | authentication_string                     |
+------+----------+-------------------------------------------+
| %    | app_user | *加密密碼                                 |
+------+----------+-------------------------------------------+

網路層必查清單(授權對了還連不上?)

  1. bind-address: /etc/my.cnf 中 [mysqld] bind-address = 0.0.0.0(或註解掉),重啟 mysqld。
  2. 防火牆: firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload(或 iptables/security group)。
  3. SSL/TLS: 若啟用 require_secure_transport=ON,客戶端需支援 SSL 連線。
  4. skip-name-resolve:避免 DNS 反向解析延遲,[mysqld] skip-name-resolve=1。

常見報錯對照

錯誤碼訊息原因解決
1130Host 'x.x.x.x' is not allowed to connectuser 表無對應 HostGRANT ...@'%' 或修改 Host
1045Access denied for user 'u'@'h' (using password: YES)密碼錯誤/加密插件不符重設密碼、改用 mysql_native_password
2003Can't connect to MySQL server on 'host' (110)網路不通/防火牆/bind-addresstelnet host 3306、檢查防火牆、my.cnf

安全最佳實踐

  1. 最小權限: 只授必要庫、必要操作(SELECT/INSERT/UPDATE),避免 GRANT ALL ON *.*。
  2. IP 白名單: 生產環境將 % 改為應用伺服器具體 IP/CIDR。
  3. 強密碼 + 定期輪換: 16+ 字元、大小寫數字符號混合。
  4. 啟用 SSL: REQUIRE SSL 強制加密傳輸。
  5. 審計日誌: 安裝 MariaDB Audit Plugin 或 MySQL Enterprise Audit 記錄登入/操作。

總結

MySQL 遠程訪問配置兩步走:資料庫層 GRANT 授權 + 作業系統層防火牆/bind-address 放行。生產環境務必遵循最小權限、IP 白名單、SSL 加密三原則,避免資料庫裸奔在公網。

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