2013-04-23 49 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