我刚安装了一个新的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_networking
和bind-address
variables – 一切都被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