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

Navicat 遠程連接 MySQL 失敗?完整排查與解決方案(含權限、防火牆、綁定地址)

     編輯:MySQL 綜合教學

現象描述

本地 Navicat 連接遠程 MySQL 報錯:10060 - Can't connect to MySQL server on 'x.x.x.x' (10060) 或 1130 - Host 'x.x.x.x' is not allowed to connect。

排查步驟(按概率從高到低)

1. MySQL 用戶權限與宿主配置

-- 登錄服務器 MySQL
mysql -u root -p

-- 檢查現有用戶
SELECT User, Host, authentication_string FROM mysql.user;

-- 方案 A:創建允許遠程訪問的用戶(推薦)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON `mydb`.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

-- 方案 B:修改現有 root 允許遠程(不推薦生產)
-- ALTER USER 'root'@'%' IDENTIFIED BY 'StrongPass123!';  -- 8.0+
-- UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
-- FLUSH PRIVILEGES;

關鍵點:

  • Host='%' 表示允許任意 IP 連接;生產建議限制具體 IP 段(如 '10.0.%')
  • MySQL 8.0+ 使用 caching_sha2_password 插件,Navicat 舊版可能不支持,需指定 mysql_native_password:
    CREATE USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';
    

2. MySQL 綁定地址(bind-address)

# 編輯 my.cnf / my.ini
[mysqld]
# bind-address = 127.0.0.1  # 註釋或改為 0.0.0.0
bind-address = 0.0.0.0
  • 127.0.0.1:僅本地回環
  • 0.0.0.0:監聽所有網卡
  • 修改後必須重啟 MySQL

3. 防火牆放行 3306 端口

CentOS 7 / RHEL 7(firewalld)

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-ports

CentOS 6 / Ubuntu(iptables)

# 臨時
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

# 或編輯 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
service iptables restart

云廠商安全組(關鍵!)

阿里雲、騰訊雲、AWS 等控制台安全組/防火牆必須放行 3306 入站規則,來源可設為你的辦公 IP 或 0.0.0.0/0(不推薦)。

4. SELinux / AppArmor(Linux 進階)

# 檢查 SELinux 狀態
getenforce
# 臨時關閉測試
setenforce 0
# 永久關閉:編輯 /etc/selinux/config -> SELINUX=disabled 並重啟

5. 驗證連通性

# 服務器本地測試
mysql -u app_user -p -h 127.0.0.1

# 客戶端測試
telnet server_ip 3306
# 或
nc -zv server_ip 3306

Navicat 連接設置建議

  • Host:服務器公網/私網 IP
  • Port:3306(或自定義端口)
  • User/Password:上文創建的遠程用戶
  • 編碼:utf8mb4
  • SSL:生產環境建議啟用 SSL 連接(需服務器配置 SSL 憑證)

總結檢查清單

  1. [ ] 用戶 Host 為 % 或具體 IP,插件兼容
  2. [ ] bind-address = 0.0.0.0 且已重啟
  3. [ ] 服務器防火牆放行 3306
  4. [ ] 云廠商安全組放行 3306
  5. [ ] telnet ip 3306 通暢
  6. [ ] Navicat 連接參數正確

逐項排查,99% 情況可解決。若仍失效,檢查 MySQL 錯誤日志 /var/log/mysqld.log 獲取詳細信息。

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