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

MySQL 遠程連接配置全流程指南:用戶創建、權限授權與防火牆穿透

     編輯:MySQL 資料庫相關知識

場景與前置檢查

生產環境常需從應用服務器、BI 工具、開發機遠程訪問 MySQL。配置前先確認服務端口監聽狀態:

netstat -an | grep LISTEN
# 預期看到 0.0.0.0:3306 或 :::3306

若僅綁定 127.0.0.1,需修改 my.cnf 的 bind-address = 0.0.0.0 並重啟服務。

步驟 1:創建遠程訪問用戶並授權

1.1 登錄 MySQL Shell

mysql -u root -p

1.2 創建用戶並指定來源主機

推薦:按最小權限原則,僅授權所需庫/表

-- 僅允許 192.168.88.234 訪問所有庫所有表的增刪改查
CREATE USER 'xuys'@'192.168.88.234' IDENTIFIED BY 'xuys1234';
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'xuys'@'192.168.88.234';

-- 開發/測試環境可放寬為任意主機(%),生產嚴禁
CREATE USER 'xuys'@'%' IDENTIFIED BY 'xuys1234';
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'xuys'@'%';

1.3 驗證用戶創建

USE mysql;
SELECT Host, User, authentication_string FROM user WHERE User = 'xuys';

步驟 2:刷新權限生效

FLUSH PRIVILEGES;
-- 或命令行:mysqladmin -u root -p reload

步驟 3:客戶端驗證連通性

# 從遠程機器測試
mysql -h  -u xuys -p
# 輸入密碼 xuys1234

常見故障排查清單

現象可能原因解決方案
ERROR 1130 (HY000): Host not allowed用戶 Host 欄位不匹配檢查 user.Host,改為具體 IP 或 %,再 FLUSH PRIVILEGES
Connection refused / timeout防火牆攔截、bind-address 未綁 0.0.0.0開放 3306 端口;修改 my.cnf 綁定 0.0.0.0 並重啟
ERROR 1045: Access denied密碼錯誤、插件不匹配(caching_sha2_password vs mysql_native_password)確認密碼;舊客戶端需 ALTER USER 'xuys'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';
SSL connection required服務端強制 SSL,客戶端未配置客戶端加 --ssl-mode=REQUIRED 或服務端放寬 require_secure_transport=OFF

進階:db 表級授權(舊版本兼容)

MySQL 5.0 之前權限系統較簡陋,部分遷移文檔提及直接操作 mysql.db 表。現代版本(5.7+)強烈不建議直接操作權限表,應統一使用 GRANT/REVOKE。若確需兼容極舊應用,參考:

-- 僅作歷史參考,勿用於新系統
INSERT INTO mysql.db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv)
VALUES ('192.168.88.234', '%', 'xuys', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;

安全加固建議

  • 最小權限:按庫/表/列粒度授權,避免 *.* 全庫授權
  • 來源限制:生產環境禁用 '%',精確到應用服務器 IP 段
  • 強密碼策略:啟用 validate_password 插件,強制長度、複雜度、過期輪換
  • 網絡隔離:安全組/防火牆僅放行應用服務器 IP 段 3306 端口
  • 加密傳輸:啟用 TLS,配置客戶端驗證服務端證書
  • 審計日誌:開啟 audit_log 記錄所有連接與 DML 操作

總結

MySQL 遠程連接核心三步:創建用戶指定 Host → 精確授權 → 刷新權限。配合網絡層防火牆、傳輸加密、審計日誌,構建纵深防御體系。避免直接操作權限表、避免通配符 Host、避免弱密碼,是生產環境穩定運行的基石。

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