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

虚拟机安装了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(函数了);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值