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

MySQL 遠程連線設定與常見問題排查

     編輯:MySQL 資料庫相關知識

前言

預設 MySQL 僅允許 localhost 連線。開放遠程存取需完成三步驟:建立遠程帳號、調整 bind-address、重啟服務。本文另補充字元集設定與 Debian 維護帳號說明。

一、建立遠程連線帳號

登入本機 MySQL:

mysql -u root -p

授權語法:

GRANT 權限清單 ON 資料庫.表 TO '用戶'@'主機' IDENTIFIED BY '密碼';
FLUSH PRIVILEGES;

常見授權範例

需求指令
特定 IP、特定表、特定權限GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON vtdc.employee TO 'joe'@'192.168.1.104' IDENTIFIED BY '123';
特定 IP、全庫全權限GRANT ALL PRIVILEGES ON vtdc.* TO 'joe'@'10.163.225.87' IDENTIFIED BY '123';
任意 IP、全域全權限(生產環境慎用)GRANT ALL PRIVILEGES ON *.* TO 'joe'@'%' IDENTIFIED BY '123';
本機 root 全權限GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123';

說明:

  • % 代表任意主機;亦可用具體 IP、主機名、網域。
  • 密碼不可為空,否則建立失敗。
  • MySQL 8.0+ 建議改用 CREATE USER ... IDENTIFIED BY ... 再 GRANT ...,避免隱式建立帳號。

二、修改 bind-address 允許網路監聽

vim /etc/mysql/my.cnf   # 或 /etc/my.cnf
# 找到 [mysqld] 區段
# bind-address = 127.0.0.1   ← 註解或改為 0.0.0.0
# bind-address = 0.0.0.0     # 監聽所有介面

三、重啟服務生效

systemctl restart mysqld   # systemd
# 或
service mysql restart      # SysVinit

四、字元集設定(避免中文亂碼)

vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

重啟後執行 SHOW VARIABLES LIKE 'character_set%'; 驗證。

五、Debian/Ubuntu 特殊維護帳號

Debian 系統安裝 MySQL 時會自動建立 debian-sys-maint 帳號(密碼存於 /etc/mysql/debian.cnf),供 mysqlcheck、logrotate、啟停腳本使用。請勿刪除或修改密碼,否則系統維護任務會失敗。

六、常見連線失敗排查清單

  1. 防火牆是否開放 3306 埠(iptables -A INPUT -p tcp --dport 3306 -j ACCEPT)。
  2. 雲端安全組/防火牆規則是否允許來源 IP。
  3. 帳號主機欄位是否匹配(SELECT user, host FROM mysql.user;)。
  4. 驅動程式連線字串是否加入 useSSL=false&allowPublicKeyRetrieval=true(MySQL 8.0+)。

總結

遠程連線核心在於「帳號@主機」匹配與 bind-address 設定。生產環境建議:最小權限原則、強制 SSL、限制來源 IP、定期輪換密碼。

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