Navicat首次连接MySQL8.0.26出现错误#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也会闪退)
,没有就新建一个, 因为笔者是用 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
完成之后是这样的:
,之后保存退出,这个的作用是跳过密码检测,等之后改完密码还要把这个语句删掉。
代码如下:
[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
注:笔者是在最后添加了语句
在上一步添加完语句之后,要将 MySQL服务重新启动 。具体是: 计算机或此电脑(右键) — 管理 — 服务和应用程序 — 服务 — 找到MySQL服务项 — 点击 “启动” 或 “重新启动”
(在进行这一步的时候要确保 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 的同志们要小心了,密码重置完就不能再用这个办法修改密码了( 慎重 )。
(!!!!!!代码如下:注意copy的时候要连最后面的分号( ; )也要一起复制!!!!!!)
//第一步 mysql>use mysql; //第二步,设置新密码,语句中‘新密码’ 要改成自己的密码 mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码'; //第三步 mysql>flush privileges; //第四步 mysql>quit;
大功告成,点个赞,给个关注呗