主机无法访问远程mysql
服务
访问远程mysql
服务时出现问题是非常常见的,但很多时候我们只需要做一些简单的排查和修改就可以解决问题
问题
当主机使用如下指令访问远程mysql
时
mysql -u root -h 192.168.56.105 -p123456
出现
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.56.105:3306' (10060)
排查
给出三个排查点
root
对应的主机为localhost
- 没有关闭
firewall
防火墙
排查点一
虚拟机启动mysql
后执行
select Host,User from mysql.user;
得到如下表
+-----------+------------------+ | Host | User | +-----------+------------------+ | localhost | root | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | +-----------+------------------+
如果root
对应的时localhost
的话就需要将其改变为%
,使其可以在任意主机访问mysql
数据库
更改指令:
update user set Host=’%’ where User =‘root’ limit 3; flush privileges; # 退出后重启即可该改变
limit 3
用于提高性能
上述方式操作后还是不行则进入第二个排查点
排查点二
查看mysql配置文件中是否有这样一条字段
bind-address = 127.0.0.1
使用命令进行检索
sudo grep -i "bind-address" /etc/mysql/* -r
-i
表示忽略大小写查询-r
表示递归查询文件夹
在我的机器上运行后出现
/etc/mysql/mysql.conf.d/mysqld.cnf:bind-address = 127.0.0.1 /etc/mysql/mysql.conf.d/mysqld.cnf:mysqlx-bind-address = 127.0.0.1
如果你的发现也有这样一条字段
/etc/mysql/mysql.conf.d/mysqld.cnf:bind-address = 127.0.0.1
那么编辑该文件,修改127.0.0.1
为0.0.0.0
然后重启mysql
服务即可
sudo systemctl restart mysql
排查点三
简单粗暴,查看firewall
状态,如果使active
则直接stop
systemctl status firewalld # 查看是active后则直接关闭 systemctl stop firewalld
当然也可以直接打开3306
端口
总结
以上就是三种主机连接不上虚拟机mysql
服务的两种排查方式,感谢观看