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文件夹下找到my.cnf,然后在[mysqld]字段下添加一行skip-grant-tables,保存完重启数据库,然后就可以直接使用mysql免密登录数据库。

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

[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退出数据库,将my.cnf文件中新增的代码去掉,然后

service mysql restart

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoYoQiooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值