尝试设置 mysql 以便从任何主机进行访问。
> 显示“root”@“%”的授权;
授予 'root'@'%' 的所有权限(带授予选项)
我的cnf
[root@p419386 etc]# cat my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
/etc/my.cnf.d 中的文件:client.cnf enable_encryption.preset mysql-clients.cnf server.cnf tokudb.cnf None 包含skip-networking
在服务器配置文件
bind-address=0.0.0.0
我使用 CentOS 7 uname -a
,
Linux p419386 2.6.32-042stab120.16 #1 SMP Tue Dec 13 20:58:28 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux
MySQL 服务器是10.1.21-MariaDB MariaDB Server
仍然无法从远程主机连接:(
问题肯定不在网络或防火墙上。
以上设置正确吗?怎么了?
毕竟问题已经找到在 iptables 规则中。因此 MySQL 配置正确!
答案1
如果我们查看您的配置(就您明确发布并告诉我们其中的内容而言),它看起来应该可以工作。至少官方 MariaDB 知识库表明了这一点。
因此,您可能缺少这些配置文件中的某些内容,或者您遇到了其他问题。虽然您确实说过问题与网络或防火墙无关,但您的最新错误ERROR 2003 (HY000): Can't connect to MySQL server on '<host>' (113)
表明这仍然可能是个问题。
您可以尝试使用 mysql 命令连接到服务器上的本地 IP (127.0.0.1)。查看我链接的问题,您将使用:
mysql -h 127.0.0.1 -u root -p
如果您能够使用该命令建立连接,您就会知道您的 MariaDB 已启动并正在运行并且接受基于 IP 的连接。
现在可能发生的情况是,它没有绑定到外部 IP 地址(也许尝试仅为其设置外部 IP bind-host
)或者您的防火墙(客户端或服务器)或其他网络组件可能会干扰并阻止连接。
要检查服务器绑定的内容,您可以运行(以 root 身份或使用 sudo):
netstat -l -n -p
你会看到如下结果:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
...
如您所见,在这种情况下,MySQL 服务器正在运行指向端口 3306 上的本地主机地址。