Navicat连接数据库一直在报错
问题背景:
Navicat安装在本机(win10),mysql安装在虚拟机(centos7),在Navicat上连接虚拟机上的mysql时遇到的几个问题,花了半天时间才弄好,哭亖。。。以此记录,希望大家少走弯路。
PS:前提,MySQL服务已经启动,可以在虚拟机上输入查看mysql状态
service mysqld status
若是此状态,说明是启动状态
否则输入此命令启动mysql:
systemctl start mysqld
1. 权限问题
解决方法:
给MySQL开启远程连接权限
第一种方式:
1.打开本地虚拟机 进入mysql
mysql -uroot -p
会提示输入密码,输入后按回车即可
use mysql
select host,user from user;
用户root的权限仅在localhost 没有为%(允许所有用户访问)
root只能在本地连接localhost 需要改为’%’
2.执行以下代码:这里的目的是给root用户 赋予所有权限登录
update user set host = '%' where user='root';
flush privileges; #更新权限
再次查看可看到root权限已更新为%
第二种方式:
use mysql;
grant all on . to ‘root’@‘%’ identified by ‘你的密码’;
可能会报语法错误,可参考:https://blog.csdn.net/nanzhuhe/article/details/145207448
接着继续尝试在Navicat上连接。。。
2.端口问题
1)虚拟机的防火墙未开放端口
1、开启防火墙
systemctl start firewalld
2、查询3306端口是否开放
firewall-cmd --query-port=3306/tcp
3、开放3306端口
firewall-cmd --add-port=3306/tcp --permanent
4、重载入添加的端口
firewall-cmd --reload
5、关闭防火墙
systemctl stop firewalld
移除指定端口指令:
firewall-cmd --permanent --remove-port=xxxx/tcp
2)与本机的MySQL冲突
win+r打开cmd窗口,输入命令’netstat -ano’查询3306的pid,pid在最后一列:
netstat -ano | findstr :3306
拿到pid后,ctrl+alt+delete打开任务管理器,检查符合pid的进程,结束该任务
回到桌面,右键此电脑,打开管理
打开服务,关闭MySQL服务
然后在虚拟机中重新启动MySQL
最后终于连接上了。。。。o(╥﹏╥)o