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

Linux 開啟 MySQL 遠程連線完整配置:授權、防火牆、參數調優

     編輯:MySQL 綜合教學

Linux 開啟 MySQL 遠程連線完整配置:授權、防火牆、參數調優

MySQL 預設 root 僅允許本地登入,遠程連線需完成三步:建立遠程授權用戶、開放防火牆 3306 埠、調整綁定位址。

步驟 1:建立遠程授權用戶

mysql -u root -p
-- 本地登入用戶 (保留)
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'localhost' IDENTIFIED BY 'StrongPass#2024' WITH GRANT OPTION;
-- 遠程連線用戶 (% 代表任意 IP)
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%' IDENTIFIED BY 'StrongPass#2024' WITH GRANT OPTION;
FLUSH PRIVILEGES;

最小權限原則: 生產環境請僅授予必要權限 (如 SELECT, INSERT, UPDATE, DELETE),避免使用 ALL PRIVILEGES。

步驟 2:配置防火牆開放 3306

CentOS 6 / RHEL 6 (iptables)

vi /etc/sysconfig/iptables
# 在 REJECT 規則之前插入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart

CentOS 7 / RHEL 7 / Rocky / Alma (firewalld)

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# 或限定來源 IP
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'

Ubuntu / Debian (ufw)

ufw allow 3306/tcp
# 或限定 IP
ufw allow from 192.168.1.0/24 to any port 3306

步驟 3:修改 MySQL 綁定位址

vi /etc/my.cnf  (或 /etc/mysql/my.cnf)
[mysqld]
# 預設 bind-address=127.0.0.1 僅監聽本地
# 註釋或改為 0.0.0.0 監聽所有介面
# bind-address = 127.0.0.1
bind-address = 0.0.0.0

修改後 重啟 mysqld:systemctl restart mysqld。

驗證遠程連線

# 客戶端測試
mysql -h 192.168.1.100 -u app_user -p
# 或使用 telnet/nc 檢查埠通達性
telnet 192.168.1.100 3306
nc -zv 192.168.1.100 3306

安全加固建議

  • 禁止 root 遠程登入:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;
  • 啟用 SSL/TLS 加密傳輸:配置 ssl-ca, ssl-cert, ssl-key 並要求 REQUIRE SSL。
  • 使用 SSH 隧道或 VPN 替代直接暴露 3306。
  • 定期審計 mysql.general_log 或 audit_log。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved