无法连接到远程MySQL服务器(10061)

25

MySQL已启用本地主机连接。

但禁用了远程(我的笔记本电脑)访问。

Can't connect to MySQL server on "host" (10061)`.

我的端口始终开放3306。

这是我的配置文件(/etc/mysql/my.cnf):

#bind-address 0.0.0.0
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

MySQL的状态是:

mysql start/running, process 15204

1
你是否在远程连接 MySQL 服务器? - Mohammad Sayeed
这是我的错误信息。在这里 无法连接到MySQL服务器"host" (10061)。是的,我正在远程连接MySQL服务器。 - Hax0r
1
允许用户使用您的IP。请查看https://dev59.com/Bmsy5IYBdhLWcg3wvgn7 - Mohammad Sayeed
7个回答

36

为了允许远程访问MySQL,您需要在配置文件中注释掉bind-address(已完成)和skip-networking。

接下来,您需要确保允许用户进行远程访问。请使用以下命令检查您的用户:

SELECT User, Host FROM mysql.user;
如果您在此处的用户中将'127.0.0.1'或'localhost'列为主机,则无法远程访问。
使用以下方式更改:
UPDATE mysql.user SET HOST='%' WHERE User='__here_your_username';

刷新权限:

FLUSH PRIVILEGES;
'

“%”是指“所有主机”的通配符。

'

4
我已将'localhost'更新为,并刷新了权限。但仍然无法访问。 - Hax0r
1
你是否将bind-address和skip-networking都注释掉了?当您尝试从终端(远程)连接到MySQL服务器时,您遇到了什么错误?mysql -h主机名 -u用户名 -p - Keugels
1
那么你的3306端口被防火墙阻止了。 :) - Keugels
1
哦,另外..如果你正在使用AWS,你也需要在安全组中打开端口。这可能是它:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html - Keugels
1
创建或更新用户后,如果更改没有立即生效,我们可能需要重新启动MySQL服务器。 - Sai Manoj
显示剩余4条评论

30

为了允许远程访问在Ubuntu上安装的MySQL,您需要访问此位置的文件:

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

在那里,您需要注释掉以下行:bind-address = 127.0.0.1

基本上需要更改:bind-address = 127.0.0.1为:#bind-address = 127.0.0.1

现在你可以通过以下命令重新启动计算机或仅重启 mySQL 服务:sudo /etc/init.d/mysql restart


1
此 bind-address 也可以在 /etc/mysql/mariadb.conf.d/50-server.cnf 中找到。 - kloddant

8
以下方法对我有效。
   SELECT User, Host FROM mysql.user;
   UPDATE mysql.user SET HOST='%' WHERE User='root';
   UPDATE mysql.user SET HOST='%' WHERE User='administrator';
   FLUSH PRIVILEGES;

然后,

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

更改

bind-address = 127.0.0.1 to: #bind-address = 127.0.0.1

保存文件。 重新启动服务器/重新启动MySQL。


5

在我的情况下,我在Ubuntu 18.04的Oracle VM上安装了LAMP堆栈。

这是我对mysql配置文件的更新:/etc/mysql/mysql.conf.d/mysqld.cnf

更新前:

bind-address          = 127.0.0.1

之后:

# bind-address          = 127.0.0.1
# comment out bind-address to test remote access

确保您的用户可以从远程主机访问 sudo mysql -u root -p 输入密码,然后执行该命令

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

+------------------+-------------------------------------------+-----------------------+--------------+ | 用户名 | 验证字符串 | 插件 | 主机 | +------------------+-------------------------------------------+-----------------------+--------------+

| newuser | *9ACA980716AE084BCA56C59D19F3CEB7BB87B139 | mysql_native_password | 192.168.x.x | | newuser | *9ACA980716AE084BCA56C59D19F3CEB7BB87B139 | mysql_native_password | localhost |

这对我起作用了,祝你好运。


4

bind-address = 127.0.0.1配置选项表示您的MySQL服务器仅接受来自本地主机(即CentOS机器)的连接。请确保设置bind-address = 0.0.0.0。


4

如果您在树莓派3上托管MySQL,则要查找的文件位于:

etc/mysql/mariadb.conf.d/50-server.cnf

虽然像Nesan Mano上面所说的那样,您仍需要遵循先前的步骤,但是通过注释掉代码,您可以更轻松地完成此操作。

bind-address = 127.0.0.1

希望这篇文章能帮助其他人节省时间,因为我曾经花费了很长时间寻找似乎缺失的一行代码。

1
检查Linux防火墙是否阻止了您的连接,作为root用户,暂时禁用防火墙:
systemctl stop firewalld
systemctl is-enabled firewalld

也可以查看输出(您的网络设备的状态)。
nmcli dev status

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接