2012-02-28 61 views
1

我能ping通我試圖成功連接的遠程服務器。然而,運行MySQL命令時:能夠ping遠程服務器,但無法連接

mysql -u monty -h website.com -p 

我收到以下錯誤:

ERROR 2003 (HY000): Can't connect to MySQL server on 'website.com' (111) 

我跟着指示發現here,說明如何創建具有必要權限的用戶:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' 
->  WITH GRANT OPTION; 
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' 
->  WITH GRANT OPTION; 

我也在/etc/mysql/my.cnf中註釋了以下行

# bind-address  = 127.0.0.1 

即便如此,我仍然無法遠程連接。有什麼我在這裏失蹤?再次感謝所有。

+0

(請注意,在大多數情況下,你不想那樣做) – 2012-02-28 22:40:33

+0

Lohoris,你指的是flush privileges命令嗎? – 2012-02-28 22:41:55

+0

您是否在註釋掉'bind-address'後重新啓動了MySQL服務器?如果沒有,請做。 – 2012-02-28 22:45:16

回答

2

錯誤111Connection refused

$ perror 111 
111: Connection refused 

有幾個常見的方式出現這種情況:

  • 服務器系統,客戶端系統,或者在中間的路由器配置爲行政REJECT這些數據包。 TCP數據包的處理方式與ICMP數據包的處理方式不同,因此能夠使用ping並不一定意味着能夠路由任何隨機TCP數據流。詢問系統管理員檢查防火牆數據的ufwiptables
  • 服務器系統正在運行mandatory access control工具,如配置爲禁止數據包的AppArmor,SELinux,TOMOYOSMACK。這些系統如何報告錯誤有所不同,但檢查/var/log/audit/audit.logdmesg(1)輸出rejectdeniedAVC
  • 您可能已經刪除只有一個bind-address配置。嘗試添加明確的bind-address=0.0.0.0(Google緩存鏈接;出於某種原因,我無法聯繫dev.mysql.com),以強制綁定到所有地址。請檢查netstat -anp | grep -i mysql以查看正在偵聽哪些端口(如果有)。
+0

明確的'bind-address'配置和'netstat'都是很好的建議。 – 2012-02-28 23:06:35

2

這不是權限問題。如果這是一個權限問題,你會得到一個不同的錯誤。

這是一個連接問題。

確保行skip-networking行被註釋掉或從您的配置文件中刪除。

確保port行配置爲正確的端口(默認爲3306)。

如果您仍然無法連接,那很可能是防火牆/ ISP問題。

Ping不是一個很好的測試,因爲它只測試ICMP服務器是否啓動。使用telnet連接到特定端口將是一個更好的測試:

> telnet website.com 3306 

有,你可以把一個my.cnf文件,因此搜索文件,以確保其他文件不生效的許多地方。

這與sarnold的答案相結合應該讓你在正確的軌道上。

相關問題