现象及原因分析
笔者在首次安装完MySQL 8.0.21之后又安装了Navicat Premium,然后在新建MySQL连接时,点击测试连接,连接失败,出现了错误1045,如下图所示:
直接的原因就是密码不对,但是笔者确定自己没有记错当时在安装MySQL时设定的密码,所以更深层次的原因笔者也不清楚,但是笔者通过以下方法(就是直接改密码),解决了这个错误实现了连接。
附:笔者当时还有一个现象是打开MySQL 8.0 Command Line Clien,然后输入密码之后就闪退。 (原因也是输错密码了,密码错误的话MySQL 8.0 Command Line Clien也会闪退)
解决方案
注:如果是MySQL 8.0版本及以上的,请直接跳到第 4 步!!!!!!!!
1.首先确保自己有my.ini文件,没有就新建一个,因为笔者是用msi安装的,所以没有my.ini文件,先创建一个文本文档,取名my. txt,然后输入下列代码,之后把.txt后缀名改成.ini即可,文件放在安装目录下\MySQL Server 8.0还是\MySQL Server 8.0\bin里都可以。
**代码如下**:
[mysql]; 设置mysql客户端默认字符集default-character-set=utf8[mysqld];设置3306端口port = 3306 ; 这里是你安装mysql的目录basedir=D:\Softer\MySQL\MySQL Server 8.0; 这里是设置mysql数据库的数据的存放目录datadir=D:\Softer\MySQLData\MySQL Server 8.0\Data; 允许最大连接数max_connections=200; 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8; 创建新表时将使用的默认存储引擎default-storage-engine=INNODB
完成之后是这样的:
2.在my.ini的代码的[mysqld]下添加一句 “skip-grant-tables” ,之后保存退出,这个的作用是跳过密码检测,等之后改完密码还要把这个语句删掉。
代码如下:
[mysql]; 设置mysql客户端默认字符集default-character-set=utf8[mysqld];设置3306端口port = 3306 ; 这里是你安装mysql的目录basedir=D:\Softer\MySQL\MySQL Server 8.0; 这里是设置mysql数据库的数据的存放目录datadir=D:\Softer\MySQLData\MySQL Server 8.0\Data; 允许最大连接数max_connections=200; 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8; 创建新表时将使用的默认存储引擎default-storage-engine=INNODB; 跳过密码检测,之后改完密码还要删掉skip-grant-tables
注:笔者是在最后添加了语句
3.在上一步添加完语句之后,要将MySQL服务重新启动。具体是:计算机或此电脑(右键)—管理—服务和应用程序—服务—找到MySQL服务项—点击 “启动” 或 “重新启动”
4.(在进行这一步的时候要确保 MySQL服务 已经运行了!!!)到开始菜单栏,将MySQL 8.0 Command Line Clien以管理员身份打开,也可以选系统自带的命令行工具,不过笔者推荐用MySQL 8.0 Command Line Clien,
进去之后是这样的,直接回车2下,进入mysql。笔者是首次安装MySQL 8.0.21,对于8.0版本及以上的,一开始就能无密码进入,无需配置my.ini,并且添加 “ skip-grant-tables ” 语句这招对8.0之后的版本也不起作用了,所以之后想改密码的话,要去找找别的办法,笔者目前也还没有试过,所以接下来的步骤对于首次安装 MySQL8.0 的同志们要小心了,密码重置完就不能再用这个办法修改密码了(慎重)。
5.接下来进行密码的重置,将下列代码依次输入
(!!!!!!代码如下:注意copy的时候要连最后面的分号( ; )也要一起复制!!!!!!)
//第一步mysql>use mysql;//第二步,设置新密码,语句中‘新密码’ 要改成自己的密码mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';//第三步mysql>flush privileges;//第四步mysql>quit;
第一步,输入use mysql;回车后效果如图:
第二步,输入ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY ‘新密码’;回车后效果如图,不要忘记语句后面的分号,同时这里要修改成自己的密码,不要忘了:
第三步,输入flush privileges;回车后效果如图:
第四步,输入quit;语句后回车,窗口关闭:
6.至此,密码就重置完成了,接下来就可以去Navicat创建新的MySQL连接了。
Navicat首次连接MySQL8.0出现错误#1045 - Access denied for user ‘root‘@‘localhost‘(using password: YES)的解决办法