44

当我尝试使用命令行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)

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

这是用户表(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 

所以有什么问题?

4

8 回答 8

79

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

netstat -tulpen

并搜索 3306。

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

bind-address = 0.0.0.0

然后重新启动服务器并重试。

于 2013-04-23T06:07:55.903 回答
30

检查状态:

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
于 2014-01-29T01:29:42.960 回答
28

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

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

代替:

/etc/mysql/my.cnf
于 2016-10-09T14:35:02.017 回答
18

如果你运行MAMP,别忘了允许访问(mySQL面板,勾选“Allow network access to MySQL”)

于 2014-04-12T16:35:36.477 回答
13

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

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

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

然后,重启防火墙:

sudo systemctl restart firewalld
于 2015-10-25T17:30:44.400 回答
1

这可能是与防火墙有关的问题,或者试试这个:

转到服务器管理 -> MySQL -> 设置 -> 检查:允许网络连接

然后重启MySQL

于 2013-04-23T05:55:12.753 回答
1

查看 MySQL 中的“拒绝访问错误的原因”。

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

可能是您的服务器上的配置失败或其他程序正在使用相同的端口?还是服务器绑定在“127.0.0.1”上?尝试更改 my.cnf 文件。

于 2013-04-23T06:02:51.350 回答
0

对于 MacOS:

mysql -uroot -p

mysql> use mysql;

# View user's host
mysql> select 'host' from user where user='root';
# Update host to '%'
mysql> update user set host='%' where user='root';

mysql> flush privileges;
mysql> quit
vim /usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
bind-address = 0.0.0.0
# Restart and reconnect MySQL
mysql.server restart
mysql -uroot -h0.0.0.0 -p
于 2020-01-05T06:58:57.583 回答