当前位置: 首页 >数据库 > 密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes)

密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes)

集群需要mysql存储元数据,就在前几天还运行好好的,突然就进不去了......还是太菜,遇到的bug少。

引起这种故障的原因有很多......第一个坑比较多,大部分用户也就用第一个就可以解决问题,我第一次也踩了第一个坑;这次出现这个问题的时候,发现不管用了,各种百度啊.....最后是发现第三个坑

1.第一个坑:密码不对--免密模式改密码;

2第二坑:user表有匿名用户,把匿名用户删除掉即可

3第三坑:localhost不对应

2.第四坑:user表下password_expired对应字段为Y。这个的意思是过期了!!!改密码什么的不管用啊,需要修改权限。

---------------------------------我是华丽的分割线--------------------------------------

-----------------------第一种坑:改密码------------------------------

1.mysql安装完成查看临时密码:

[root@localhost mysql]# cat /root/.mysql_secret # The random password set for the root user at Thu Sep 13 22:33:41 2018 (local time): uZlyTYGkbiE4zsjA

2.临时密码登录报错:

[root@localhost mysql]# mysql -umysql -pEnter password: ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)

3.停止mysql

systemctl stop mysql

4.编辑/usr/my.cnf文件

vi /etc/my.cnf

在my.cnf文件的[mysqld]添加以下内容,用于免密登录

skip-grant-tables

4.启动mysql

systemctl  start mysql

5.无密码登录

mysql -u root

6.修改密码

use mysql ;
update mysql.user set authentication_string=password('123456') where user='xxx' ;
flush  privileges;
quit

7.编辑/usr/my.cnf文件,注释掉skip-grant-tables。

 

 -----当修改密码时,发现依旧不好使,这时候就要查看user表,判断:是第2种坑?第3种坑?还是第4种坑?-------

 

select user,host,password,password_expired from user;

1、如果password字段为空,则有匿名用户;

2、如果host字段没有localhost,则localhost不对应;

3、如果root@localhost对应的password_expired有Y字样,则密码过期了!!需要改权限!! 

 

 

下面的这三篇博客分别讲述了三种情况

-------------------------------------博客1:有匿名用户,单纯改密码不行----------------------------------------

https://www.cnblogs.com/linuxnote/p/3780244.html?utm_source=tuicool&utm_medium=referral

查看user表

密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes) _ JavaClub全栈架构师技术笔记
mysql> use mysql;

mysql> SELECT User, Host, Password FROM mysql.user;+------+------------------+-------------------------------------------+| User | Host | Password |+------+------------------+-------------------------------------------+| root | localhost| *84BB5DF4823DA319BBF86C99624479A198E6EEE9 || root | liao.localdomain | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 || root | 127.0.0.1| *84BB5DF4823DA319BBF86C99624479A198E6EEE9 || GaMe | %| *84BB5DF4823DA319BBF86C99624479A198E6EEE9 || root | %| *84BB5DF4823DA319BBF86C99624479A198E6EEE9 || | localhost||| | liao.localdomain ||+------+------------------+-------------------------------------------+
密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes) _ JavaClub全栈架构师技术笔记

 可以看到,我的数据库中有root用户,GaMe用户和匿名用户,GaMe用户的主机使用%代表所有主机。最下面的2个是匿名用户

解决的方法:删除匿名用户(仅仅为了安全也有这个必要)

 mysql>use mysql; mysql>delete from user where user=''; mysql>flush privileges; //用来刷新内存,是语句立即生效。

 再次修改密码即可!

-------------------------------------博客2:localhost不对应----------------------------------

来源:https://www.linuxidc.com/Linux/2015-04/116492.htm

查看一下user表: 

mysql> select user,host from user; +———–+———+ | user| host | +———–+———+ | root  | 127.0.0.1 | | night | % | +———–+———+

localhost没有映射到127.0.0.1?试试#mysql -u root -p xxxx -h 127.0.0.1,果然可以登录。 
没有给’root’@’localhost’和’root’@’ip’授权。 
grant all privileges on . to ‘root’@’localhost’ identified by ‘mypassword’ with grant option; 
grant all privileges on . to ‘root’@’118.192.91.xxx’ identified by ‘mypassword’ with grant option;

再查询一下用户表: 
密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes) _ JavaClub全栈架构师技术笔记 
然后#mysql -u root -p xxxx,登录成功!

-----------------博客3:user表下root用户的password_expired对应字段为Y------------

来源:http://equalxx.iteye.com/blog/2394709

1.免密登录

2.查看user表:

mysql> select user,host, password_expired from user;

而且通过查看user表,发现root用户的password_expired是Y,意思也就是过期了,这并不是上面update语句能改变的

最后解决这个问题是要通过

flush privileges; 
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY '123456';
flush privileges; 

 然后就可以通过mysql -uroot -p123456顺利登录了

作者:bioamin
来源链接:https://www.cnblogs.com/students/p/9647016.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/118403.html

分享给朋友:

“密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes)” 的相关文章

MySQL触发器 2022年05月16日 21:53:36
sql递归查询 2022年05月17日 21:40:33
触发器的定义及优点 2022年05月21日 11:37:15
MySQL 查询结果中增加字段的方法 2022年06月07日 10:05:05
mysql查询最后一条记录 2022年06月08日 19:25:45
mysql的查询句 2022年06月09日 23:40:52
mysql 查询操作日志 2022年06月10日 21:58:42