码迷,mamicode.com
首页 > 数据库 > 详细

mysql修改完密码无法再次登陆

时间:2017-08-28 00:44:16      阅读:1556      评论:0      收藏:0      [点我收藏+]

标签:mysql的安装   set   服务   alt   strong   ant   修改密码   密码   roo   

现象:修改完root密码之后,退出mysql,重启mysql服务,然后想用新密码登陆mysql,发现登不上去了。

一,碰到这种问题的原因是,在给用户改密码的时候没有使用password()函数对密码加密。如下:

mysql> update user set password=‘root@123‘ where user=‘root‘;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0

mysql> quit

# mysql -u root -p
Enter password: ********
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

使用select查询mysql库里的user表,可以发现在user表中,密码都是以加密的形式存在的。

mysql> select * from user where user="root";

....

| localhost | root | *A00C34073A26B40AB4307650BFB9309D6BFA6999 | Y           | Y           | Y           | Y

....

如果直接指定‘set password=‘root@123‘ ,mysql就会认为‘root@123‘是一个加密后的字符串,所以与这个加密字符串对应的

密码自然不是‘root@123‘了,而是另外一个位置的值。

正确的修改root密码的命令应该是

mysql> update user set password=password(‘root@123‘) where user=‘root‘;

二,现在知道原因了。但是我们登不上数据库,怎么办呢。解决方法如下

1,找到当前数据库进程,并将其杀死

技术分享

2,进入到mysql的安装目录,进入到bin目录,执行mysqld_safe --skip-grant-tables (默认安装路径/usr/local/mysql/bin)

技术分享

经过这一步,mysql服务就会以一种忽略用户权限的方式启动,就能使用mysql进行无密码登陆了。可以通过ps aux | grep mysql查看服务已经启动

3,重新打开一个控制台,再次执行‘mysql‘命令,这次可以无密码登陆了

技术分享

4,使用正确的命令重新修改密码

技术分享

 5,使用密码登陆,OK了

技术分享

6,最好使用以下命令刷新一下系统权限(不然别人还可以无密码登陆)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql修改完密码无法再次登陆

标签:mysql的安装   set   服务   alt   strong   ant   修改密码   密码   roo   

原文地址:http://www.cnblogs.com/flyfish919/p/7440868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!