Navicat连接Linux的mysql8.0出现1130错误,2059错误详解
liunx更新mysql8.0数据库后,Navicat连接数据库出现问题
1、链接数据库测试报错1130
如果不修改任何东西(当然安装mysql后端口启动和安全组还有密码更改之类的不算),启动liunx的mysql后,会出现1130的错误,这个大概率就是因为帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑(liunx)登入MySQL后,更改"MySQL"数据库"user"表里的"host"项,将"localhost"改成"%"即可,具体步骤如下:
“localhost”指的是用户开放的IP。可以是“localhost”(仅本机访问,相当于127.0.0.1),可以是具体的IP,最好是“%”(所有IP均可访问)。
mysql> SHOW DATABASES;
mysql> USE mysql;
输入命令后出现 Database changed是正常的哦
mysql> SELECT ‘host’ FROM user WHERE user=‘root’;
#查看user表的host值
mysql> UPDATE user SET host = ‘%’ WHERE user =‘root’;
#修改host值
mysql> flush privileges;
#刷新MySQL的系统权限相关表
有参考链接的,但是作者搞丢了,对原创抱歉,按照以上步骤可以完成!
设置好权限后再进行链接测试,发现报错2059。
2、链接数据库测试报错2059
报错如下图:
这个错误的原因是:
mysql8.0 之前的版本中加密规则是mysql_native_password,而在mysql8.0之后,加密规则是caching_sha2_password
解决办法:
更改加密规则:
[root ~]# mysql -uroot -ppassword
#登录mysql命令
mysql> use mysql;
#选择数据库
~~mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
#更改加密方式,如果远程连接’localhost’换成’%'会报错:
ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@‘localhost
如果这个时候你不确定,你是’localhost’还是’%’,使用以下命令查询:
mysql> select user,host from user; ~~
确定后重新输入语*句:
mysql> ALTER USER ‘root’@’%’ IDENTIFIED BY ‘Timetrend2012’ PASSWORD EXPIRE NEVER;
#更改加密方式
mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘Timetrend2012’
#更新用户密码
mysql> FLUSH PRIVILEGES;
#刷新权限
如下图:
作者参考链接