欢迎喜欢编程语言知识和机器学习算法等科技类文章,以及经济和历史等文史类文章的朋友们关注公众号:CodingFarmer2019,
我们一起格物致知和学史悟道,实现人生辉煌!
目录
3. 修改root账户的加密方式为mysql_native_password并设置密码为root
一、Navicat连接异常,错误编号2059的解决方法
在首次使用navicate连接mysql数据库时,报错,错误编号2059:authentication plugin 'caching_sha2_password',如下图1所示:
图1 Navicat连接异常时错误编号2059
本办法适用的环境为:mysql版本是8.0,navicate版本是12.0。出现此错误的原因为mysql 8.0版本之前使用mysql_native_password方式进行加密,现在使用caching_sha2_password方式加密。所以只需把mysql的加密方式改回mysql_native_password就可以。具体修改步骤为:
1. 登录mysql数据库
命令为mysql –uroot –p,回车后输入安装mysql时的初始密码即可登录mysql数据库,进入mysql命令行。登录成功后如下图2所示:
图2 成功登录mysql数据库
2. 查看mysql 8.0版本默认加密方式
在mysql命令行下输入:show variables like 'default_authentication_plugin'; ,果然mysql 8.0版本使用caching_sha2_password方式加密,如下图3所示:
图3 查看mysql 8.0版本默认加密方式
3. 修改root账户的加密方式为mysql_native_password并设置密码为root
在mysql命令行下输入:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '{root}'; ,修改成功的话,如下图4所示。之后输入命令:select host,user,plugin from mysql.user; 进一步确认是否修改成功,如下图5所示:
图4 成功修改root账户的加密方式以及密码
图5 查看成功修改的root账户的加密方式
4. 修改成功后,刷新权限
在mysql命令行下输入:FLUSH PRIVILEGES;
现在就可以愉快地使用navicat对mysql数据库进行进行可视化管理了。如果在上述第3步修改root账户加密方式以及密码时,不慎忘记了新修改的密码,在使用Navicat连接时出现编号为1045的错误,并且此时也无法通过命令mysql –uroot –p登录mysql数据库(因为无法键入密码),那么此时可重置mysql的root账户的密码,如下述第二部分的内容介绍。
二、Navicat连接异常,错误编号1045的解决方法
忘记mysql的登录密码时,使用navicate连接mysql数据库时,报错,错误编号1045:Access denied for user’root’@ 'localhost'(using password:YES),如下图6所示;通过命令mysql –uroot –p登录mysql数据库时,报错,如下图7所示:
图6 Navicat连接异常时错误编号1045
图7 无法登录mysql数据库
本办法适用的环境为:mysql版本是8.0,navicate版本是12.0。出现此错误的原因为登录密码错误,解决的办法自然就是重置密码。具体步骤为:
1. 跳过mysql的密码认证登录mysql
通过cd命令进入到根目录下的etc/mysql文件夹,使用vim工具编辑my.cnf配置文件,命令为:sudo vim my.cnf,回车后按“i”键进入编辑模式,输入[mysqld] skip-grant-tables,按Ese退出编辑模式后,再键入“:wq”表示退出vim编辑并保存,此时已在my.cnf配置文件中加入了跳过密码认证登录mysql的语句,如下图8所示:
图8 my.cnf配置文件输入跳过密码认证登录的语句
2. 重启mysql后免密登录mysql
在mysql文件夹的命令行下输入命令:service mysql restart,重启后输入命令:mysql,登录mysql数据库。
3. 清空mysql密码:在mysql命令行下输入
use mysql; 再输入清空密码的命令:update user set authentication_string=’’ where user=’root’; 之后输入命令退出mysql:exit。各条命令的输入详情如下图9所示:
图9 mysql密码清空的命令
4. 屏蔽第1步的跳过mysql密码认证登录
通过cd命令进入到根目录下的etc/mysql文件夹,使用vim工具编辑my.cnf配置文件,命令为:sudo vim my.cnf,回车后按“i”键进入编辑模式,在[mysqld] skip-grant-tables语句前面加#即可注释,按Ese退出编辑模式后,再键入“:wq”表示退出vim编辑并保存,此时已在my.cnf配置文件中加入了屏蔽第1步的跳过密码认证登录mysql的语句。输入命令:service mysql restart重启mysql,让my.cnf的修改生效。
5. 重新登录mysql数据库
命令为mysql –uroot –p,因为密码清空了,直接回车后就可登录。
6. 修改mysql登录密码
在mysql命令行下输入:use mysql切换到mysql数据库; 再输入设置密码的命令:ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ’root’; 就将mysql的root账户的密码重置为root,之后输入命令:FLUSH PRIVILEGES; 刷新mysql相关系统权限表,之后输入命令退出mysql:exit。各条命令的输入详情如下图10所示:
图10 mysql密码重置的命令
7. 重新启动mysql,输入新密码进入mysql
在mysql文件夹的命令行下输入命令:service mysql restart重启mysql,之后输入命令mysql –uroot –p,回车后输入新设置的密码即可登录mysql数据库,进入mysql命令行。各条命令的输入详情如下图11所示:
图11 使用新设置的密码登录mysql数据库
现在通过root账号的新密码root就可以愉快地使用navicat连接mysql数据库了。