这是本人在工作学习中遇到的问题以及解决办法,如有问题,麻烦评论或者留言
通常产生的原因有:1、navicat连接mysql服务的用户的访问权限受限,2:centos7 防火墙机制不允许3306端口被访问
1、针对第一种情况,我们可以查看mysql 的用户访问权限,
1.1、使用mysql -uroot -p 登陆连接到MySQL服务,并输入密码
1.2、 将mysql服务切换到mysql数据库上,执行 use mysql 指令
1.3、查看mysql 服务的用户信息(用户名,可访问ip)(如果,root用户的host不是localhost而是%的话,跳过1.4)
select user, host from user;
user 代表mysql服务可访问的用户,host代表用户运行在制定的ip上访问(localhost,表示本机)
1.4、修改root用户允许在任务机器上访问 update user set host='%' where user='root';
1.5、 给 root 授权(所有权限)GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
1.6刷新用户权限,使root新设置的权限能够生效 flush privileges;
至此可以使用MySQL 客户端管理工具navicat 连接MySQL服务
2、针对第二种情况,我们可以查看centos7 的防火墙的运行状态
2.1、查看centos7 firewalld 的运行状态 systemctl status firewalld
2.2加入防火墙是处于运行状态的话,再查看防火墙运行主机被访问的端口
firewall-cmd --zone=public --list-ports
2.3、假如,防火墙没有开放3306端口(MySQL端口)的话,需要新增3306端口允许在外部被访问
firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含义:
--zone #作用域
--add-port=3306/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效 可写可不写,不写的话需要执行下面的reload操作
2..4、重新加载firewalld防火墙的配置信息使其生效
firewall-cmd --reload
2.5、再次查看firewalld防火墙开放的端口列表
firewall-cmd --zone=public --list-ports
至此MySQL服务应该能够使用navicat工具进行连接