MySQL拒绝接受远程连接

我刚安装了一个新的Ubuntu的服务器与MySQL(percona 5.5),但它拒绝接受来自远程主机的连接

这是如果我尝试远程连接到此服务器会发生什么情况:

mysql -h10.0.0.2 -uroot -pmypassowrd ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111) telnet 10.0.0.2 3306 Trying 10.0.0.2... telnet: Unable to connect to remote host: Connection refused 

当我检查如果mysql监听远程连接,我看到了这一点:

 sudo netstat -ntlup | grep mysql tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld 

正如你可以看到它说127.0.0.1:3306这意味着“我只接受本地连接”。

我检查了我的skip_networkingbind-addressvariables – 一切都被closures:

 mysql> show variables like '%skip_networking%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.00 sec) mysql> show variables like '%bind%'; Empty set (0.00 sec) 

我有另一台服务器完全相同的configuration,它很好用:

 sudo netstat -ntlup | grep mysql tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld 

这可能是什么原因? 我如何让MySQL响应远程连接?

尝试将bind-address = 0.0.0.0添加到my.cnf的[mysqld]部分,然后重新启动mysqld。

这可能是由于mysql数据库用户表(使用mysql;显示表;)。 如果绑定到0.0.0.0不适用于您,请尝试在该表中为您的用户提供主机“%”而不是“localhost”。

例如,尝试创build一个用户,如:

CREATE USER yourusername @'%'IDENTIFIED BY'yourpassword'

ant尝试与该用户连接。

当一切都失败了,你确定服务器正在监听默认端口,并且你试图从其他主机上绝望地连接到mysql客户端时,尝试在mysql命令的URL中指定端口。

奇怪,因为它不得不使用以下语法:

 mysql -h someHost --port=3306 -u someUser -p someDb 

我发现这个(bug?)完全是偶然的(在丢掉我的头发之后:))。

我的设置:debian jessie,新鲜的MySQL 5.7.18,用户/数据库创build,绑定地址注释掉,mysqld重新启动

在下面的链接中描述的解决scheme应该解决您的问题http://www.debianhelp.co.uk/remotemysql.htm