Linux的mysql报ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YSE)

编程入门 行业动态 更新时间:2024-10-12 12:34:22

Linux的mysql报ERROR 1045 (28000): <a href=https://www.elefans.com/category/jswz/34/1770507.html style=Access denied for user ‘root‘@‘localhost‘ (using password: NO/YSE)"/>

Linux的mysql报ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YSE)

(1)如果是最后的提示是NO则说明当前数据的登录需要使用密码,而此次登录时并没有使用密码登录,只需进行密码登录。

(2)如果使用密码登录时,报错YES,则说明当前用户的密码字段或者Host字段出现问题,则可先通过绕过密码的方式进行登录查看登录用户信息。

绕过密码登录

(1)如果mysql的版本是5.7以下,则直接在/etc文件夹下找到myf,然后在[mysqld]字段下添加一行skip-grant-tables,保存完重启数据库,然后就可以直接使用mysql免密登录数据库。

(2)如果mysql的版本是5.7以上,在/etc文件夹下是找不到myf文件的,所以只需要新建一个myf,然后添加两行代码

[mysqld]skip-grant-tables

保存完重启数据库,然后就可以直接使用mysql免密登录数据库。

修改用户密码

(1)免密登录之后,use mysql切换数据库,然后依次执行

update user set authentication_string = PASSWORD('new password') where User = 'username';FLUSH PRIVILEGES;

第一句sql指令如果数据库版本低于5.7时,user表中的密码字段应该是password,所以需要将指令修改为

update user set password = PASSWORD('new password') where User = 'username';

(2)修改之后可以通过sql指令查看当前用户信息

Select Host, authentication_string from user where User = ‘username’;

此处需要特别说明,该表中的Host字段指示的是当前登录数据用户的主机ip,比如说Host字段中是localhost,那如果想登录数据库,则只能是本机登录,所以在做开发时需要将数据库的地址设置为localhost,如果想要远程访问,可以将Host改为想要进行访问的主机的ip地址即可。(192.168.1.% 该表达式可以匹配所有子网为192.168.1.xxxx的所有ip)

所以如果Host不是localhost,就算密码修改成功之后,也无法在本机进行登录,所以再测试的时候还会报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

(3)修改完通过quit退出数据库,将myf文件中新增的代码去掉,然后

service mysql restart

重启数据库,即可正常通过密码登录数据库。

一定一定一定要检查数据库用户的Host字段,因为它直接决定哪些主机可以通过当前数据库用户进行登录!!!!

更多推荐

Linux的mysql报ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using

本文发布于:2024-03-23 20:14:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742354.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Access   Linux   mysql   ERROR   localhost

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!