我该如何解决:Mysql远程访问不起作用

时间:2019-03-03 15:33:04

标签: mysql ubuntu

我是在mysql中完成的

USE mysql;

CREATE user 'test'@'%' IDENTIFIED BY 'test';

GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

和终端机

sudo apt-get install ufw

sudo ufw allow mysql

sudo ufw allow 3306

service mysql restart

并在/etc/mysql/mysql.conf.d

中编辑了mysqld.cnf
#bind-address       = 127.0.0.1

但是当我尝试使用此代码访问终端中的mysql服务器

mysql -utest -ptest --port 3306 --host [myip]

enter image description here

这是3306端口状态

enter image description here

4 个答案:

答案 0 :(得分:1)

由于您可以发出CREATE USER语句,因此您至少具有对MySQL的本地访问权限。

使用此访问权限,检查performance_schema.host_cache表:该表列出了所有可能的导致拒绝连接的根本原因。

https://dev.mysql.com/doc/mysql-perfschema-excerpt/5.7/en/host-cache-table.html

通过此操作以及状态变量等,您应该能够确定是否:

  • 连接被阻止在网络中,甚至没有到达服务器,
  • 由于各种影响身份验证的故障,服务器本身阻止了连接。

也尝试使用简单的telnet连接到端口3306,看看是否有连接和一些答复数据返回,表明至少可以通过网络访问服务器。

编辑:

注释cnf文件中的绑定地址是一回事,但是最好验证服务器实际使用了哪个绑定地址:

mysql> show variables like "%bind%";
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| bind_address        | *     |
| mysqlx_bind_address | *     |
+---------------------+-------+
2 rows in set (0.02 sec)

这可能会影响连接。

答案 1 :(得分:0)

提供apache远程访问

检查此答案 https://stackoverflow.com/a/55037055/7510232

答案 2 :(得分:0)

看到这一行表明MySQL正在监听ipv6:

:::3306

我认为MySQL当前仅在 上监听ipv6地址(和本地主机),因此请尝试将bind-address设置为您正在使用的ipv4地址。

答案 3 :(得分:0)

您是否尝试过ping MySQL服务器并通过telnet端口?

::: 3306表示您的MySQL服务器正在ipv4和ipv6上监听, 如果您想通过ipv6访问它,则 您需要添加

bind-address = ::

支持您的ipv6访问权限