无法连接到错误61的远程MySQL服务器

Wen*_* Ji 36 mysql

当我尝试使用命令行mysql -h <remote-ip> -u any_existing_users -p或任何其他mysql客户端(如phpmyadmin)连接远程MySQL服务器时,它不起作用,错误提示是

ERROR 2003 (HY000) Can't connect to MySQL server on '<remote-ip>' (61)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试ssh <remote-ip>在本地连接MySQL时mysql -u root -p,没有问题.

这是user table(SELECT User, Host FROM mysql.user;)的一部分:

+------------------+----------------+
| User             | Host           |
+------------------+----------------+
| root             | %              |
| other_users      | <remote-ip>    |
| root             | localhost      |
+------------------+----------------+
Run Code Online (Sandbox Code Playgroud)

这是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 
Run Code Online (Sandbox Code Playgroud)

所以有什么问题?

Kaf*_*fee 69

检查你的mysql服务器是否正在使用netstat监听套接字:

netstat -tulpen
Run Code Online (Sandbox Code Playgroud)

并搜索3306.

如果不是或仅在localhost上,请检查my.cnf并搜索该bind-address行并将其更改为:

bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

然后重新启动服务器并再试一次.


Hai*_*mei 29

检查状态:

netstat -tulpen
Run Code Online (Sandbox Code Playgroud)

修改配置:

nano /etc/mysql/my.cnf
# Edit:
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

输入mysql并授予权限:

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

重启mysql

/etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)

  • 虽然准确,但在没有警告的情况下授予权限时我会更加小心 (3认同)

ulo*_*lou 22

随着MySql 5.7他们更改文件,所以bind-address现在:

/etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)

代替:

/etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)


use*_*882 17

如果您运行MAMP,请不要忘记允许访问(mySQL面板,选中"允许网络访问MySQL")


rce*_*dar 12

在服务器上安装Centos 7后,我遇到了这个问题.我无法通过远程计算机中的Mysql Workbench访问它.

问题出在防火墙配置中.最终,解决方案来自:

sudo firewall-cmd --zone=public --permanent --add-service=mysql
Run Code Online (Sandbox Code Playgroud)

然后,重启防火墙:

sudo systemctl restart firewalld
Run Code Online (Sandbox Code Playgroud)