ToB企服应用市场:ToB评测及商务社交产业平台

标题: 数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using pa [打印本页]

作者: 怀念夏天    时间: 2024-9-16 08:49
标题: 数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using pa
前言

今天在用自己电脑,想使用Navicat打开MySQL数据库时,发现登陆不上并提示1045 Access denied for user ‘root’@‘localhost’ (using password: YES)。网上的答案都“千篇同等,描述的也不够简便清晰”。今天我针对这个问题给出原因表明和两个办理此问题的方法!

一、原因:

1.数据库密码被篡改了!

没错,就是这个原因。但是许多人会立马反驳,我自己的电脑一直用着好好的,怎么会被篡改了呢?黑客的本领厉害着呢,篡改你的数据库密码不是主要目标,目标是篡改后进入你的数据库备份数据库文件然后删除当地数据库,要挟你索要比特币才是主要目标。

2.数据库权限变更了!

这个原因与你呆板的账户权限变更有很大的关系,实际发生场景有许多,就不举例了。
二、办理方法

1.方法:编辑mysql设置文件my.ini

在mysql的安装目录下,差别电脑可能不一样,参考目录:
①D:\Program Files\MySQL\MySQL Server 5.0\my.ini;
②C:\ProgramData\MySQL\MySQL Server 8.0\my.ini;
在[mysqld]这个条目下加入 skip-grant-tables 保存退出后重启mysql
PS:
8.0的版本不支持,亲测8.03,免得爆背面的错误:
mysql: [ERROR] unknown option ‘–skip-grant-tables’.
2.步调如下:

PS: 这里的mysql指的是你当地服务名,也有可能你用的是mysql80或mysqlxx
   1.打开cmd,点击“开始”->“运行”(快捷键Win+R)。
2.制止:输入 net stop mysql
3.启动:输入 net start mysql
4.跳过权限:输入mysqld --console --skip-grant-tables --shared-memory
  

也可以在盘算机-管理-服务里面找到MySQL的服务,手动进行重启服务。如图:

这时候在cmd里面输入mysql -u root -p就可以不消密码登录了,出现 password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但许多利用都会受限制,由于没有grant权限。

三、总结:mysql8.0版本下命令行mysqld -skip-grant-tables 失效 无法登陆问题的办理方法

   1、管理员权限登陆cmd,不会使用管理员登陆的请搜刮cmd,搜刮结果右键。
    2、命令行输入:net stop mysql;然后提示。服务制止中 --> 服务已制止,如出现其他错误请百度。
  1.   这只是一个示例,请在服务中查看服务具体名称,比如我的就是mysql8.0.33。
  2.   服务不会打开的请 win+R --> services.msc --> 回车,找到mysql开头的服务名。
复制代码
  3、由于mysqld –skip-grant-tables实测在mysql8.0中已失效,现使用mysqld --console --skip-grant-tables --shared-memory
    4、别的开一个cmd,使用mysql直接无密登录。
  登陆成功后,继承按下面的流程走:
四、设置新密码

1.进入mysql数据库:

   mysql> use mysql;
  

2.给root用户设置新密码:

   mysql> update mysql.user set authentication_string=‘新密码’ where User=‘root’ and Host=‘localhost’;
  

PS: 如果出现以下错误:
   mysql> ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
  是由于mysql数据库下已经没有password这个字段了,按照我的步调把password字段改成了authentication_string。
延伸(无问题请忽略):
   PS: 如果你当前使用的是MySQL80数据库服务,并且使用ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’;进行修改;这在 --skip-grant-tables 下可能命定不起作用。
 
原因:当你重置密码必要无密码登录时,你通过 --skip-grant-tables 选项运行,这个选项会跳过权限表的加载,允许任何用户无需密码即可连接到 MySQL 服务器。因此,当您尝试更改用户密码时,MySQL 服务器无法实行该利用,由于它当前没有加载权限表。
  3.革新数据库

   mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  

4.退出mysql:

   mysql> quit;
Bye
  

改好之后,保存退出再重启mysql服务,再重新用Navicat连接就可以了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4