Ubuntu/MySQL 5.0 本地命令列建表授權正常,Navicat 遠程連線報錯:
2003 - Can't connect to MySQL server on 'ubuntu' (10061)
| 層面 | 檢查項 | 命令/位置 |
|---|---|---|
| 網路綁定 | bind-address = 127.0.0.1 僅監聽本地 | /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf |
| 使用者權限 | Host 為 % 或具體 IP | SELECT User, Host FROM mysql.user; |
| 防火牆 | 3306 端口放行 | ufw allow 3306 / iptables |
| MySQL 服務 | 重啟生效配置 | systemctl restart mysql |
# 編輯配置 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 找到 bind-address 行,改為 bind-address = 0.0.0.0 # 或註釋掉 #bind-address = 127.0.0.1 # 重啟 sudo systemctl restart mysql
-- 查看現有 SELECT `User`, `Host` FROM `mysql`.`user` WHERE `User` = 'usera'; -- 若只有 localhost,新增 % 或具體 IP CREATE USER 'usera'@'%' IDENTIFIED BY 'passwd'; GRANT ALL ON `testdb`.* TO 'usera'@'%'; FLUSH PRIVILEGES;
ss -tlnp | grep 3306 # 或 netstat -tlnp | grep 3306 # 輸出應包含 0.0.0.0:3306 或 :::3306
# UFW sudo ufw allow 3306/tcp # iptables sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
skip-networking 是否開啟(應關閉);IPv6 環境確保 :: 監聽。DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;setsebool -P mysql_connect_any 1 或調整政策。mysql_native_password:ALTER USER 'usera'@'%' IDENTIFIED WITH mysql_native_password BY 'passwd';Navicat 遠程連不上 MySQL,90% 是 bind-address=127.0.0.1 與 Host='%' 缺一不可。雙重檢查網路綁定與使用者權限,配合防火牆、驗證插件相容性,即可快速解決。