2013-04-23 29 views
29

連接到遠程MySQL服務器當我試圖通過使用命令行mysql -h <remote-ip> -u any_existing_users -p或任何其他MySQL客戶端,例如phpMyAdmin來遠程MySQL服務器連接,它沒有工作和錯誤提示是不能與錯誤61

ERROR 2003 (HY000) Can't connect to MySQL server on '<remote-ip>' (61) 

但是,當我試圖ssh <remote-ip>mysql -u root -p本地連接MySQL的,是沒有問題的。

下面是用戶表(SELECT User, Host FROM mysql.user;)的一部分:

+------------------+----------------+ 
| User    | Host   | 
+------------------+----------------+ 
| root    | %    | 
| other_users  | <remote-ip> | 
| root    | localhost  | 
+------------------+----------------+ 

這裏是iptable的:

Chain INPUT (policy ACCEPT) 
num target  prot opt source    destination   
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0   0.0.0.0/0   

Chain FORWARD (policy ACCEPT) 
num target  prot opt source    destination   
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0   0.0.0.0/0   

Chain OUTPUT (policy ACCEPT) 
num target  prot opt source    destination   

Chain RH-Firewall-1-INPUT (2 references) 
num target  prot opt source    destination   
1 ACCEPT  all -- 0.0.0.0/0   0.0.0.0/0   
2 ACCEPT  icmp -- 0.0.0.0/0   0.0.0.0/0   icmp type 255 
3 ACCEPT  esp -- 0.0.0.0/0   0.0.0.0/0   
4 ACCEPT  ah -- 0.0.0.0/0   0.0.0.0/0   
5 ACCEPT  udp -- 0.0.0.0/0   224.0.0.251   udp dpt:5353 
6 ACCEPT  udp -- 0.0.0.0/0   0.0.0.0/0   udp dpt:631 
7 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:631 
8 ACCEPT  all -- 0.0.0.0/0   0.0.0.0/0   state RELATED,ESTABLISHED 
9 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:22 
10 REJECT  all -- 0.0.0.0/0   0.0.0.0/0   reject-with icmp-host-prohibited 
11 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:3306 

那麼,有什麼問題嗎?

+0

請在這裏檢查我的帖子。它可能會幫助你:http://stackoverflow.com/a/22637763/676508 – 2014-03-25 14:48:15

回答

57

檢查你的mysql服務器監聽用netstat套接字:

netstat -tulpen 

,搜索3306

如果沒有或只在本地主機上,檢查my.cnf文件和搜索bind-address線並將其更改爲:

bind-address = 0.0.0.0 

然後重新啓動服務器,然後重試。

+0

一行顯示「 'tcp 0 0 ::: 3306 ::: * LISTEN 100 1'''。 ''':::'''是什麼意思?這是否意味着mysql綁定在IPv6地址上? – rAy 2013-04-23 06:16:21

+0

似乎喜歡它,但我不知道分可以確定。你有沒有嘗試通過本地主機上的IP進行連接?通過ssh連接並執行「mysql -u user -p -h 127.0.0.1」或服務器的公共IP地址,並測試是否可以連接。一個簡單的「mysql -u用戶-p」也可以通過套接字文件連接。 – Kaffee 2013-04-23 06:22:17

+0

mysql -u用戶-p -h 127.0.0.1''''mysql -u用戶-p -h 0.0.0.0'''和'''mysql -u用戶-p -h ' ''一切工作正常。@ Kaffee – rAy 2013-04-23 06:28:07

1

它可以是防火牆或嘗試此相關的一個問題:

去服務器管理 - > MySQL的 - >設置 - >查詢:允許網絡連接

然後重啓MySQL

+0

我正在使用CentOS,如何允許MySQL的網絡連接 – rAy 2013-04-23 05:58:37

1

乘坐查看MySQL的「訪問被拒絕錯誤的原因」。

http://dev.mysql.com/doc/refman/5.1/en/access-denied.html

不可能性是存在的服務器或其他程序正在使用同一端口上配置失敗?或者服務器綁定在「127.0.0.1」上?嘗試更改my.cnf文件。

+0

my.cnf中沒有'''bind-address'' 。當我添加'''bind-address = '''時,它根本無法工作。 – rAy 2013-04-23 06:07:55

+0

嘗試在MySQL服務器開始時給出一個特定的IP: http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind- address – Zaziki 2013-04-23 06:27:36

20

檢查狀態:

netstat -tulpen 

修改配置:

nano /etc/mysql/my.cnf 
# Edit: 
bind-address = 0.0.0.0 

輸入mysql和給予特權:

mysql -umyuser -pmypassword 
# Run: 
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 
exit 

重啓MySQL

/etc/init.d/mysql restart 
+2

儘管準確無誤,但在授予權限時我會更加謹慎,而不會發出警告 – Purefan 2016-02-25 23:32:43

+0

這對我有效。但我只是不得不使用sudo進行第2步和第4步 – Srichakradhar 2017-06-16 18:04:01

13

如果你運行MAMP,不要忘記允許訪問(mySQL面板,勾選「允許網絡訪問MySQL」)

+0

@andyp你爲什麼這麼認爲?它看起來像(非常短,但仍然)對我來說。 – 2014-04-12 17:42:11

+0

@Jan:你說得對,我很快就把這個視爲一個評論早些時候 – andyp 2014-04-12 17:44:43

+0

甜,簡單加有效的解決方案。 THanx – 2014-09-16 10:42:45

7

剛剛在服務器上安裝Centos 7之後,我遇到了這個問題。我無法通過遠程計算機上的Mysql Workbench訪問它。

問題出在防火牆配置中。最終,該解決方案在做的時候就來了:

sudo firewall-cmd --zone=public --permanent --add-service=mysql 

,然後重新啓動防火牆:

sudo systemctl restart firewalld 
10

隨着MySql 5.7他們改變文件所以現在bind-address是:

/etc/mysql/mysql.conf.d/mysqld.cnf 

,而不是:

/etc/mysql/my.cnf 
+1

謝謝你。 – ServerSideSkittles 2016-10-22 01:31:57

+0

與上述^相同 – KGCybeX 2017-09-24 07:01:05