`
equalxx
  • 浏览: 64662 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql账号用户名正确但无法登录问题解决

阅读更多

我本地的mysql版本是5.7.19,设置的用户名和密码是root/root,前几天还用得好好的,突然有一天输入正确的用户名和密码登不上去了,报错像下面这样:

 

XUEXUEdeMacBook-Pro:MyShells xuexue$ mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

 好多人说用跳过认证的方式直接改密码,我也试了,步骤就是找到mysql安装路径下的bin下,运行

./mysqld_safe  --skip-grant-tables &

 然后直接就可以免密登陆了,查找user表,用以下方式把密码改成123456

update user set authentication_string='123456' where user='root';

 发现并不管用,你会发现这一列的密码样式很不合群,按说不应该是明文,应该是加密的啊,看看结果

mysql> select user,host,authentication_string from user;

+---------------+-----------+-------------------------------------------+

| user          | host      | authentication_string                     |

+---------------+-----------+-------------------------------------------+

| root          | localhost | 123456                                    |

| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

+---------------+-----------+-------------------------------------------+

 

3 rows in set (0.00 sec)

 

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

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

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

 执行完后,再执行

flush privileges;

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

 

这篇文章是17年写的,回看一下,发现这个东西应该从根上去解决,也就是说,既然知道是密码过期,就应该去设置密码过期时间。我当时估计也就是求先能登陆了:)转发别人的链接:https://www.cnblogs.com/root-admin/p/9369622.html

 

如果觉得文章好的话,鼓励一下吧:D

 

 

 

 

  • 大小: 144.5 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics