Navicat首次连接MySQL8.0出现错误#1045 - Access denied for user ‘root‘@‘localhost‘(using password: YES)的解决办法

现象及原因分析

笔者在首次安装完 MySQL 8.0.21 之后又安装了 Navicat Premium ,然后在 新建MySQL连接 时,点击 测试连接 ,连接失败,出现了 错误1045 ,如下图所示:
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连接 了。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_25719943/article/details/107760503