今天在用navicat工具去远程连接虚拟机mysql时,一直报无法连接错误
然后网上比较了很多种方法:发现导致mysql无法连接的原因有很多种,我这边就举例三种常见的原因:
1、MYSQL 服务没有启动
1)输入下面的命令检查虚拟机mysql服务是否启动
1| systemctl status mysqld
active表示已正常启动。如果没有启动,则输入以下命令:
systemctl start mysqld
说明:
可以设置开机时启动mysql服务,避免每次开机启动mysql。执行如下指令:
systemctl enable mysqld
2、MYSQL没有设置远程连接
1) 登录mysql
mysql -u root -p
登录mysql数据库,修改root的密码,为root设置一个新的密码。并且我们还需要开启root用户远程访问该数据库的权限,这样的话,我们就可以在windows上来访问这台MySQL数据库。
2)修改密码
set global validate_password_length=4; 设置密码长度最低位数
set global validate_password_policy=LOW; 设置密码安全等级低,便于密码可以修改成root
set password = password('root'); 设置密码为root
3) 开启访问权限
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;
注意:
# grant all privileges on *.* to '用户名'@'%' identified by '密码';
# mysql8.0 以前的版本可以使用grant在授权的时候隐式的创建用户,8.0以后已经不支持,所以必须先创建用户,
然后再授权
3、3306端口没有启动 -(本人出现的问题是该原因导致的)
1)检查端口信息
netstat -ntpl | grep 3306
![](https://i-blog.csdnimg.cn/direct/56d3964ffe7842dfa08063863bc5a5ca.png)
2)用以下指令查看防火墙是否设置了3306端口,如果回车后没数据,说明没有3306端口,如果回车后显示3306端口是drop状态,都需要修正。
iptables -vnL | grep 3306
3) 防火墙设置3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
再次输入iptables -vnL | grep 3306 后,出现下图,就没有问题了