客户端不能连接MySQL - 2003-Can't connect to MySQL server on '192.168.43.180'(10060 "Unknown error")
客户端不能连接MySQL
场景:
数据库(此处以MySQL为例)安装在虚拟机里面,在宿主机上进行连接数据库的时候始终不能连接,但在虚拟机中使用正常。
针对上面的场景:
1. 在虚拟机里面可以正常使用MySQL
2. 在宿主机上进行连接的时候,始终不能连接
解决方案:
第一步:检查账号是否支持远程链接?
相关操作指令:
# mysql -uroot -p 使用root用户链接mysql
# show databases 查看已有的数据框(主要是为了找:mysql 这个数据库)
# use mysql 使用mysql这个数据库
# select user,password,host from user; 查询已有的数据库账号
注意:
一定要有那个带有%的一条记录。
% 表示:允许所有的ip进行连接,如果这里是一个ip地址:192.168.1.100,也就说,允许192.168.1.100这个ip的电脑进行连接。
如果没有这条记录,需添加(即:创建账号或者进行修改账号的host为%),这里进行添加 :
# insert into user(user,password,host) values('learn',password('learn'),'%')
# commit;
# grant all privileges on learn.* to learn@'%'; 将learn这个数据库的所有操作权限给learn这个用户
# flush privileges;
第二步:检查 防火墙(linux)是否关闭?或者释放了3306(如果防火墙关闭了,就无需释放)
解决方法一:直接关闭防火墙,如下
# firewall-cmd --state
如果是开着的,直接关闭,使用指令,
# systemctl stop firewalld
如果把防火墙关闭了,就可以直接连接mysql了
但是每次重启或者关机后还要重新来 一遍,麻烦,所以我用方法二,开放MySQL专用的端口3306就可以了啊
解决方法二:开放MySQL专用的端口3306,如图
查看是否已经开放3306端口
firewall-cmd --query-port=3306/tcp
开放端口3306
firewall-cmd --permanent --add-port=3306/tcp
重启防火墙
firewall-cmd --reload
问题解决
以上两步基本上就可以解决问题了。
上面的指令是针对CentOS 7.x版本的。