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

最近在修复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 新的密码

至此,一切结束。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值