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

MySQL 遠程訪問權限配置速查:五大場景一條龍授權

     編輯:MySQL 綜合教學

核心授權模板


GRANT privileges ON database.table TO 'user'@'host' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

五大常見場景速配

場景SQL 指令說明
1. 單庫全權限、任意主機、無密碼(測試用)GRANT ALL PRIVILEGES ON test.* TO 'root'@'%';僅開發環境,生產嚴禁無密碼
2. 全庫全權限、任意主機、無密碼GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';極高風險,僅內網受信主機
3. 指定用戶、全庫、任意主機、無密碼GRANT ALL PRIVILEGES ON *.* TO 'liuhui'@'%';同上,建議加密碼
4. 指定用戶、全庫、任意主機、有密碼GRANT ALL PRIVILEGES ON *.* TO 'liuhui'@'%' IDENTIFIED BY 'liuhui';生產基礎配置
5. 指定用戶、全庫、僅特定 IPGRANT ALL PRIVILEGES ON *.* TO 'liuhui'@'10.2.1.11';最小權限原則,推薦

進階授權範例


-- 單表 CRUD
GRANT SELECT, INSERT, UPDATE, DELETE ON prod.orders TO 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass!';

-- 單表唯讀(報表/分析帳號)
GRANT SELECT ON prod.orders TO 'readonly'@'10.0.%' IDENTIFIED BY 'ReadOnlyPass!';

-- 欄位級授權(隱藏敏感欄位)
GRANT SELECT (id, order_no, amount, status) ON prod.orders TO 'api_user'@'10.0.%' IDENTIFIED BY 'ApiPass!';

-- 存儲程序執行權限
GRANT EXECUTE ON PROCEDURE prod.calc_commission TO 'app_user'@'10.0.%';

-- 僅允許本機 Unix socket 連線(最高安全)
GRANT ALL ON *.* TO 'local_admin'@'localhost' IDENTIFIED BY 'LocalPass!';

網路層面必做配置

  1. my.cnf 綁定位址:
    
    [mysqld]
    bind-address = 0.0.0.0  # 監聽所有介面,或指定內網 IP
    # skip-networking  # 註釋掉此行
    
  2. 防火牆開放 3306(僅信任來源 IP):
    
    # iptables
    iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 3306 -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -j DROP
    
    # firewalld
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="3306" accept'
    firewall-cmd --reload
    
  3. 雲端安全組/防火牆:同理,僅開放應用伺服器 CIDR。

驗證連線


# 客戶端測試
mysql -u liuhui -pliuhui -h 10.2.1.10 -P 3306

# 檢查用戶實際主機匹配
SELECT User, Host, plugin FROM mysql.user WHERE User='liuhui';

常見錯誤與解決

錯誤原因解決
ERROR 1130: Host 'x.x.x.x' is not allowed to connect用戶主機不匹配(% 不含 localhost socket)建立對應 Host 用戶:'user'@'%' + 'user'@'localhost'
ERROR 1045: Access denied for user密碼錯誤或密碼插件不匹配確認密碼;MySQL 8.0 指定 IDENTIFIED WITH mysql_native_password
連線超時防火牆/安全組攔截、bind-address 錯誤檢查網路層、my.cnf

安全最佳實踐清單

  • ✅ 專用帳號、專用密碼、專用主機限制
  • ✅ 最小權限:僅授必要庫/表/欄位/操作
  • ✅ 密碼複雜度 ≥ 16 字元,定期輪換
  • ✅ 啟用 SSL/TLS 加密傳輸(REQUIRE SSL)
  • ✅ 審計日誌:audit_log 或一般查詢日誌記錄敏感操作
  • ✅ 定期 SHOW GRANTS 檢視權限漂移
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved