您的位置:首页 > 运维架构 > Linux

centos7.0下外部连接不上mysql8.0及navicate连接报错问题

2020-07-04 12:36 99 查看

虚拟机安装了mysql8.0.19,内部可以访问连接,外部navcicate却连接不了

1、使用navicate连接报错,首先检查mysql端口是否开启

发现已经开启
2、再检查服务器的端口是否开启
在cmd窗口或者powershell命令窗口下 执行

telnet 192.168.181.100 3306

此时连接不算,不一定是没开端口,先打开下图telnet 功能,

如果还是不能连接则表示服务器没开3306端口
3、此时进入服务器修改端口配置文件,添加3306的端口开启

vi /etc/sysconfig/iptables

如果没有iptables文件则安装iptables服务

yum install iptables-services


或者命令开启3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

然后重启防火墙

firewall-cmd --reload

查询端口

firewall-cmd --zone=public --query-port=3306/tcp

删除端口

firewall-cmd --zone=public --remove-port=3306/tcp --permanent

此时去外部telnet连接3306端口是可以连上的,但是navicate还是连不上mysql
4、现在想起来之前安装的时候忘了授权给root用户在其他地方登陆
授权root用户在其他机器登录

use mysql;
select user,host from user;  #查询创建的用户
update user set host='%' where user ='root'; #允许远程机器连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; #授权
flush privileges; #刷新权限

老版本navicate不支持mysql8.0默认加密方式,假如不想更新navicate,就需要更改密码加密方式

alter user 'root'@'%' identified with mysql_native_password by '你的密码'; # 更改密码的加密方式并更改密码
flush privileges; #刷新权限

5、创建新用户

CREATE USER 'username1'@'%' IDENTIFIED BY '123456'; #创建新用户
GRANT ALL PRIVILEGES ON *.* TO 'username1'@'%' WITH GRANT OPTION;#给新用户授权
flush privileges; #刷新权限

6、更改密码

alter user 'username1'@'%' identified by '123456';

7、假如忘记密码了可以在my.cnf[mysqld]下添加以下代码

skip-grant-tables


这时再重启mysql用 mysql -uroot -p登录时,可直接跳过密码输入,就能进入mysql了,
此时先将密码置为空 ‘’,

update mysql.user set authentication_string='' where user = 'root'; 。

退出删除skip-grant-tables后重启,用空密码登录的话,就可以执行以上(6)步骤了
为什么跳过密码登录后不直接修改密码而是要先将密码修改为’'空再进来修改呢,假如直接修改的话,我这边第6步会直接报语法错误,因为skip-grant-tables不允许直接修改密码,另外通过更新user表的authentication_string字段也不能直接修改密码,因为mysql8.0已经没有oassword(函数了);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: