| 錯誤碼 | 含義 | 常見原因 |
|---|---|---|
| 10061 / 2003 | 無法連接目標主機 | 防火牆阻擋 3306、MySQL 未啟用遠程、bind-address 錯誤 |
| 1045 | 存取被拒 | 帳號/密碼錯誤、宿主限制(host 欄位)、權限未刷新 |
# Linux: 編輯 my.cnf
[mysqld]
bind-address = 0.0.0.0 # 監聽所有介面,預設 127.0.0.1 僅本地
# Windows: 編輯 my.ini 同理
# 重啟服務
systemctl restart mysqld # 或 service mysql restart
# CentOS 7+ firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# Ubuntu ufw
ufw allow 3306/tcp
# 雲廠商安全組/防火牆亦需放行
-- 登入 MySQL
mysql -uroot -p
-- 建立帳號並授權(% 代表任意 IP)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
或修改既有 root 允許遠程(生產環境不建議):
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
# 客戶端測試
mysql -h 192.168.1.100 -u remote_user -p
# Navicat 設定:
# Host: 192.168.1.100 Port: 3306 User: remote_user Password: ********
audit.log 或暫時設為 Permissive 測試。[mysqld] 加入此參數可避免 DNS 反解延遲導致連線超時。'user'@'192.168.1.%' 或具體 IP。require_secure_transport=ON 強制加密傳輸。