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

Linux 服務器開啟 MySQL 遠程連線權限完整步驟

     編輯:MySQL 綜合教學

Linux 服務器開啟 MySQL 遠程連線權限完整步驟

MySQL 預設僅允許本地連線,生產環境常需開放遠程存取。本文提供「改表法、授權法」雙路徑配置、bind-address 調整、服務重啟、防火牆放行的標準化操作流程,並針對常見坑點給出排查指南。

方法一:改表法(直接修改 mysql.user 表)

mysql -u root -p
# 進入 MySQL 後
USE mysql;
UPDATE user SET Host='%' WHERE User='root';
SELECT Host, User FROM user;  -- 確認變更
FLUSH PRIVILEGES;

優點: 直觀、快速。缺點: 繞過權限系統邏輯,易遺漏 ssl_type、password_expired 等欄位,不推薦生產環境使用。

方法二:授權法(標準 GRANT 語法,推薦)

場景 1:允許任意主機以 root 遠程連線(極高風險,僅演示)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongP@ssw0rd!' WITH GRANT OPTION;
FLUSH PRIVILEGES;

場景 2:建立業務專用帳號,限制來源 IP 段(生產標準)

-- 僅允許 192.168.1.0/24 網段
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'Str0ng!P@ss';
GRANT SELECT, INSERT, UPDATE, DELETE ON `business_db`.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;

場景 3:單一固定 IP

GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.8.193' IDENTIFIED BY 'RootP@ss!';
FLUSH PRIVILEGES;

關鍵配置:修改 bind-address 開放網路監聽

# 編輯 /etc/mysql/my.cnf 或 /etc/my.cnf
[mysqld]
# 註釋掉預設僅監聽本地
# bind-address = 127.0.0.1

# 或顯式指定監聽所有介面
bind-address = 0.0.0.0
# 若有多張網卡,可指定具體內網 IP
# bind-address = 192.168.1.100

修改後必須重啟 MySQL: systemctl restart mysqld

服務重啟標準命令

# 方式一:systemd (現代 Linux)
systemctl restart mysqld

# 方式二:SysV init (舊版)
/usr/bin/mysqladmin -u root -p shutdown
/usr/bin/mysqld_safe &

# 方式三:service 通用
service mysqld restart

防火牆放行 3306 埠(系統級兜底)

# iptables (立即生效,重啟失效)
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

# 持久化 (CentOS/RHEL 7+)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# Ubuntu/Debian (ufw)
ufw allow 3306/tcp
ufw reload

# 阿里云/騰訊雲/華為雲:控制台「安全組」同步放行 3306 入站規則

驗證遠程連線

# 客戶端機器執行
mysql -h  -u app_user -p -P 3306

# 或使用 telnet/nc 測試埠通達性
telnet  3306
nc -zv  3306

常見坑點排查表

現象可能原因排查命令
Connection refusedbind-address 未改、防火牆阻擋、MySQL 未啟動netstat -ntlp | grep 3306; iptables -L -n
Access denied for user帳號/密碼錯、Host 不匹配、未 FLUSH PRIVILEGESSELECT User, Host FROM mysql.user;
Host 'x.x.x.x' is not allowed授權 Host 與實際客戶端 IP 不符檢查客戶端出口 IP,授權對應 Host
SSL connection error客戶端強制 SSL、伺服器未配置mysql --ssl-mode=DISABLED ...

安全警示: 開放遠程連線必須配合「強密碼、最小權限、IP 白名單、SSL 加密、審計日志」五項措施。嚴禁 在公網直接暴露 3306 埠且使用 root/% 帳號。

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