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

MySQL 遠程訪問權限配置完整教程

     編輯:MySQL 綜合教學

MySQL 遠程訪問權限配置完整教程

核心授權語法

GRANT privileges ON database.table TO 'username'@'host' IDENTIFIED BY 'password' [WITH GRANT OPTION];

常見授權場景範例

場景 1:允許從任意主機連線(開發/測試環境)

-- 建立用戶並授予所有資料庫所有權限
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

說明:% 為通配符,代表任意 IP。生產環境嚴禁使用。

場景 2:限制特定 IP 連線(生產環境推薦)

-- 僅允許 192.168.1.3 連線
CREATE USER 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' WITH GRANT OPTION;
FLUSH PRIVILEGES;

場景 3:限制特定資料庫權限(最小權限原則)

-- 僅授予 app_db 資料庫的讀寫權限
CREATE USER 'app_user'@'10.0.0.%' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO 'app_user'@'10.0.0.%';
FLUSH PRIVILEGES;

配置後必須執行的步驟

  1. 刷新權限:FLUSH PRIVILEGES;
  2. 檢查防火牆:確保 3306 埠對應 IP 開放
    # CentOS 7+
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.3" port protocol="tcp" port="3306" accept'
    firewall-cmd --reload
  3. 修改 MySQL 綁定地址(/etc/my.cnf 或 my.ini)
    [mysqld]
    bind-address = 0.0.0.0  # 監聽所有介面,預設 127.0.0.1 僅本機
    修改後 必須重啟 MySQL 服務

驗證連線

# 客戶端測試
mysql -h 192.168.1.100 -u myuser -p

# 或使用 telnet 測試埠連通性
telnet 192.168.1.100 3306

安全性最佳實踐

  • 避免使用 root 遠程登入,建議 RENAME USER 'root'@'%' TO 'admin'@'%';
  • 使用強密碼策略,定期輪換
  • 生產環境啟用 SSL 連線:REQUIRE SSL
  • 定期審計權限:SHOW GRANTS FOR 'user'@'host';
  • 使用防火牆/安全組限制來源 IP 段

常見錯誤排查

錯誤代碼原因解決方法
1130 (HY000)Host not allowed檢查用戶 host 欄位、防火牆、bind-address
1045 (28000)Access denied密碼錯誤、用戶不存在、權限不足
2003 (HY000)Can't connectMySQL 未啟動、埠未開放、bind-address 錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved