您的位置:首页 > 数据库 > MySQL

解决mysql中忘记密码或密码过期之后,如何进入mysql问题

2016-09-10 19:30 344 查看
最近在修复mysql中密码过期的问题,过程比较波折啊。所以总结一下,帮助自己以后好直接使用。

进入mysql,而忽略密码登录,其实非常简单。只需要一条简单的命令就好,该命令为:mysqld_safe  --skip-grant-tables &或/usr/bin/mysqld_safe  --skip-grant-tables &

另一种方法为修改配置文件,在my.cnf中[mysqld]模块下添加skip-grant-tables

例如

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip-grant-tables

重启mysql服务,即可直接进入,无须密码.

通过使用该命令之后,我们可以直接进入mysql而不需要密码,当在需要输入密码的时候,可以直接跳过就好。

但是在使用这中情况的时候,很有可能会发生一个问题,就是受到目前系统中存在的mysql线程影响,导致提示ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (111)

这种时候需要我们将计算机中存在的mysql的进程,全部杀死。然后再次执行mysqld_safe --skip-grant-tables &命令。

杀死进程需要查看进程,查看进程的命令为:ps -ef |grep 进程名

在杀死进程的时候,很有可能因为是父级与子级的关系导致进程无法被杀死。

所以这个时候需要查看父级进程的pid,然后把它杀死。

查看父级进程的命令为: ps -A|grep -i 进程名

然后根据pid将进程杀死,命令为:kill -9 pid号

所以杀死进程之后,通过mysqld_safe  --skip-grant-tables &命令启动服务之后,直接通过mysql命令登录。然后就可以修改密码了,修改密码的步奏如下:

新版本

use mysql;

update user set authentication_string=PASSWORD(‘12345678’) where user=”root”;  //将root密码设置为12345678

flush privileges;

quit

老版本

use mysql;

update user set password=PASSWORD(‘12345678’) where user=”root”;  //将root密码设置为12345678

flush privileges;

quit

是老版本还是新版本,自己根据mysql数据库中的user表的列情况判断,查看表具有的列命令为:show columns from user;

至此,密码修改完成,就可以停止mysqld_safe –skip-grant-tables &命令。因为我不知道该如何停止,所以我会直接把这个进程杀死。然后通过service mysql start启动mysql服务,用新的密码登录 mysql -uroot -p 新的密码

至此,一切结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 密码