当前位置:首页 » Mysql技术教程

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

2017-09-27 16:00 本站整理 浏览(2)

我本地的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顺利登录了