首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

MySQL 遠程連接配置全攻略:權限授予與防火牆開放

     編輯:Java 程式設計入門

報錯根因分析

Host 'xxx' is not allowed to connect to this MySQL server 核心原因有二:

  1. MySQL 用戶無遠程訪問權限(默認僅允許 localhost)
  2. 服務器防火牆攔截了 3306 端口(或自定義端口)

兩步解決方案

步驟 1:開放防火牆端口

# CentOS 7 / RHEL 7 (firewalld)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# Ubuntu (ufw)
ufw allow 3306/tcp

# Windows 防火牆 (PowerShell 管理員)
New-NetFirewallRule -DisplayName "MySQL 3306" -Direction Inbound -LocalPort 3306 -Protocol TCP -Action Allow

若修改過 my.cnf 中的 port,請同步調整防火牆規則。

步驟 2:創建遠程用戶並授權

-- 1. 以 root 登錄
mysql -uroot -p

-- 2. 創建用戶並授權 (推荐 8.0+ 語法)
CREATE USER 'dev_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'dev_user'@'%';
FLUSH PRIVILEGES;

參數詳解

子句含義示例
ALL PRIVILEGES所有權限;可細化為 SELECT,INSERT,UPDATE 等SELECT, INSERT
mydb.*針對 mydb 庫下所有表;*.* 為全庫全表testdb.orders
'dev_user'@'%'用戶名 + 允許連接的主機;% 表示任意 IP'app'@'192.168.1.%'
IDENTIFIED BY設置密碼(8.0+ 合併在 CREATE USER 中)'P@ssw0rd'

安全加固建議

  • 最小權限原則:僅授予業務必需的庫、表、操作
  • IP 白名單:將 % 縮小為具體應用服務器 IP 段
  • 強密碼策略:12 位以上、含大小寫數字符號、定期輪換
  • SSL 加密:啟用 REQUIRE SSL 防止流量劫持
  • 禁用 root 遠程:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';

驗證連通性

# 客戶端測試
mysql -h server_ip -u dev_user -p -P 3306

# 或使用 telnet 檢查端口
telnet server_ip 3306

完成上述配置並通過驗證後,MySQL 遠程連接即可正常使用。

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