终极解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)

废话少说,先看解决方法!最开始我自己解决的时候查了很多资料发现是错的(文章最后面有我总结csdn其他博主错误或者不适合的地方合集)。其实原理很简单,先给你们看正确步骤!!!!

图一:

注意看2号和3号步骤,2号代表:你数据库取的名字,3号代表你这个用户名 他们有本质区别

当我们用idea连接mysql的时候看好:

图二:

这里写用户(也就是图二的1号)必须写图一的3号,不要填写图一的2号!!!这里千万不要搞错了

下面是我错误的原因截图,和我错的一样的小伙伴看看你们是不是和我错的一样的

其他我看过的博主解决方法,反正对我来说没有解决

博主一(链接:终极解决 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)_error 1045 (28000): access denied for user 'odbc'@-CSDN博客):文章很长,我都看了,操作了,没用 其中my.inl我更本没有这个文件。用我的方法一样解决了

当你在Windows系统中,以命令行方式,输入 mysql 后,提示 错误:
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)

请,先确认,你使用的MySQL版本,使用命令 mysql --version,注意 在 version 前 是 2 个减号,

首先,声明,我使用 的 MySQL 版本是:
mysql Ver 8.0.27 for Win64 on x86_64 (MySQL Community Server - GPL)
其他,MySQL 版本 ,能不能使用我提供的方法解决,暂时还没有测试,
但,如果你是和我一样的版本,用我的方法一定能解决你遇到的问题。

接下来,说明一下,
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
问题的原理,
这里,先将报错信息,逐字解释一下,如果不感兴趣,请跳过,往下看。

ERROR 1045 (28000):
给出的是,错误和它的代码,这个不重要,

Access denied for user:
访问,拒绝了,用户,
这里的关键字,是 user,用户,
也就是说,这个错误提示信息,说明了,为什么出现这个错误,的,根本原因,是,使用了错误的用户尝试登录MySQL,

(using password: NO):
这个也没用,不用看,意思是: (使用密码了吗:并没有)

‘ODBC’@‘localhost’ :
就是这个 ODBC 用户,
也就是说,当你不指定登录用户时,Windows 在连接 MySQL 数据库的时候,就会使用这个 ODBC 用户去连接 MySQL 数据库,不管你的 MySQL 数据库中是否存在这个 ODBC 用户,Windows系统,都会使用这个 ODBC 用户去 尝试连 MySQL 数据库,个人感觉,应该是,Windows 系统对 ODBC 比较熟吧,毕竟 在 Windows中 有好多 ODBC 相关的接口
(开放数据库连接(Open Database Connectivity,ODBC))
所以,如果你不想使用 mysql -uroot -proot 这种加了两个参数(-u、 -p)方式登录 MySQL 数据库,就是想,直接 敲命令 mysql 就能进入 MySQL 控制台的话,你就需要告诉,MySQL,你不想使用 Windows 系统为你选的 ODBC 用户去连 MySQL,你想使用一个你熟悉的用户登录 MySQL,并且,在登录的时候,不想输入过多的 参数,只用一个 mysql 命令 ,就可以登录到 MySQL 控制台中,
那么,如何告诉 MySQL 呢?

就需要知道,MySQL 的,运行机理,
在 Windows 环境中,MySQL 的启动是去调用 你安装到 Windows 系统中的 mysql 服务的,
这个服务的位置在,控制面板\所有控制面板项\Windows 工具\服务(我的终端是 Windows home版)
如果,你找不到,服务,就百度一下吧,


打开 服务,找到 mysql 服务,这里如果,你曾多次安装过不同版本的 MySQL 的话,可能会有其他的名称,比如 mysql57 、mysql80 等等,反正你知道它是 mysql 就行,

右键点击,找到的这个 mysql 服务,在弹出的下拉菜单中,点选,属性,
就能看到,mysql 的服务,最终要调用的是,MySQL 安装路径中,bin 里的,mysqld.exe 这个应用程序,

而,这个 mysqld.exe 应用程序,在启动的时候,第一时间会去找 一个文件,my.ini,
这个 my.ini 文件,会告诉 mysqld 需要在启动的时候做些什么,
所以,我们只要配置好 my.ini 文件,就能告诉和指挥 MySQL 怎么做,也就能达到我们 只使用一个命令 mysql 就能登录到 MySQL 的 控制台里,而不需要 输入 繁琐的 各种参数,
所以,问题的关键,就在 这个 my.ini 文件上了。
接下来,就是去找到 my.ini 这个文件了,

很奇怪,我在 MySQL 官网上下载的这版 MySQL ,在它的安装目录中,没有 my.ini 文件,
所以,通过,全盘搜索,在一个目录下,找到了这个 my.ini 文件,
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
可以打开(使用记事本),可以编辑,但是保存的时候报错,

好解决,把这个 my.ini 文件从 C:\ProgramData\MySQL\MySQL Server 8.0\ 拷贝出来,粘贴到 Windows 桌面,然后进行编辑和保存,最后把这个经过编辑和保存过的 My.ini 文件,粘贴回 原来的目录下,
C:\ProgramData\MySQL\MySQL Server 8.0\
系统会提示,替换或跳过文件,点选,替换目标中的文件(R),然后,点,继续,就可以完成,绕过 Windows 系统 权限,进行 my.ini 文件的编辑和保存了。
但是,尝试登录 MySQL 仍然报错,

编辑了 My.ini 文件,但是,没有作用,不是因为我们的理论错误,而是,这个 my.ini 文件的位置不对,
再看一眼 ,mysql 服务的,启动路径,

很明显,mysql 服务 要启动的是 mysqld.exe 这个应用程序,

而这个应用程序 mysqld.exe 就会在它所在的 MySQL 安装路径中 寻找 它需要的 my.ini 文件,
即:
C:\Program Files\MySQL\MySQL Server 8.0\

而我们找到 My.ini 文件 所在 的目录是:
C:\ProgramData\MySQL\MySQL Server 8.0


显然,我们的现在要做的是,将编辑好的 my.ini 文件,搬运到 mysqld.exe 应用程序所在的 安装路径中,但请注意不是和 mysqld.exe 应用程序 同级的目录下面,而是 mysqld.exe 应用程序的父级目录 bin 的上一级目录中,
也就是,C:\Program Files\MySQL\MySQL Server 8.0\

查看一下,当前用户,是不是,我们想要的 root,
mysql> select user();

没错,

问题,解决,
也不用,停止、启动 MySQL 服务,
(net stop mysql、net start mysql)
也不用 在 my.ini 中的 [mysqld]里,skip-grant-tables
按我的方法,就能解决问题,爽不爽!

这里,补充一下,编辑 my.ini 文件需要更改的地方和内容,
打开 my.ini 文件 ,找到 [mysql] (请注意,不是 mysqld,而是 mysql )


然后,输入,我们想要 MySQL 使用的 登录时的用户账号和密码。
请注意,这里,账号,和密码,这两项都要填入,否则,还会报原来的错误,

其实,这个问题困扰我有些日子了,大半年了,期间找了不少网络的帖子,都是复制粘贴类型的,不解决根本问题,就是在刚刚,在 bing 上按 错误提示搜索了一下,看到一位大神的解释,恍然大悟,对,MySQL 的启动过程 有了新的了解和认识,于是立刻做了个实验,很顺利直接就成功了,马上来和大家分享一下,希望能帮到大家,少走弯路,当初确实挺烦恼的,都要砸电脑了,谢谢网络上这些大神文章的指点,保护了我的办公终端。

博主二(完美解决MySQL ERROR:Access denied for user `root`@`localhost` (using password:YES)_access denied for user 'root'@'localhost' (using p-CSDN博客):

没有告诉我们具体怎么操作,我看了,基本上就是一个一个排查,没有具体过程,操作难度大!

新建mysql连接的时候,出现了Access denied for user 'root'@'localhost' (using password:YES)
这是由于root用户的密码不对导致的,需要设置root用户的密码。

如何无密码登录mysql
若忘记密码了,或一开始安装的时候没有设置密码,找到mysql安装目录下的my.ini,并在最后一行 添加skip-grant-tables
1
设置密码:
1、如果没有配置环境变量,首先得找到mysl的安装目录
2、运行cmd(管理员身份),切换到mysql bin目录
3、输入mysql -uroot -p,然后回车
4、回车后,会要求输入密码
5、 因为这时候密码是为空的(若想修改密码,就得输入自己之前设置的密码,若忘记之前的密码,去看本文中无密码登录mysql部分),所以不需要输入,直接回车就可以了
6、 输入 use mysql; (注意结尾有分号;)出现 Database changed 就对了,接下来就要开始设置密码了。
7、输入update user set password=password("这里填写要设置的密码") where user="root";然后回车
密码设置成功之后,此时的密码还没有生效,还需要刷新一下权限(这一步也是关键的)
8、输入 flush privileges; (注意结尾有分号;),然后回车
9、到此为止,密码已经修改并生效了,但是还需要测试一下,所以我们再输入 quit 并回车,先退出mysql
10、测试是否成功:输入之前第一步输入过的 mysql -uroot -p,并回车,这个时候一样会要求我们输入密码,接下来我们输入 刚刚设置好的密码,并回车,出现下图结果即为成功

其他博主我也看了,大同小异,就是mysql有没有正常运行之类的,这玩意基本上都是没有问题的,查了也没啥卵用

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值