MySQL忘记密码or重置密码的解决方法
MySQL的版本:5.5.X
此例中的mysql采用源码编译,已经将安装位置加入环境变量,并且配置好mysql启动脚本到/etc/init.d/目录下
忘记密码:
解决办法:
(1)先停止mysql数据库
/etc/init.d/mysql stop
无启动脚本:
pkill -9 mysql killall mysql
(2)打开新的连接窗口,在新的窗口使用mysqld_safe 启动mysql,并添加参数跳过mysql用户登录认证
(键盘输入 ctrl+a+d)screen mysqld_safe --skip-grant-tables --skip-networking
--skip-gran-tables:跳过mysql用户登录认证
--skip-networking:跳过网络用户认证,只能本地登录(按需要添加此参数)
#使用screen打开一个新窗口,并执行mysqld_safe命令后,退出screen窗口)
(3)进入mysql,修改密码
执行第二步后,可以使用mysql命令直接进入
此时,使用update修改mysql数据库下user表的密码记录数据,使修改后,使用flush privileges刷新权限
update mysql.user set password=password('newmima') where user='root';
flush privileges;
(4)重启mysql,重启后,用新密码登录
pkill mysql 或 /etc/init.d/mysql restart
MySQL的版本5.6.X
密码错误:
密码错误处理过程和5.5.X版本相同
MySQL的版本5.7.5以上
密码错误:
解决方法:
先关闭mysql进程
pkill -9 mysql 或 /etc/init.d/mysqlstop
跳过认证登录:
直接执行mysqld_safe会导致mysql5.7.5以上版本将sock文件锁定而无法登入mysql
因此,将skip-grant-tables直接写入mysql配置文件my.cnf
更改密码:
mysql5.7.5以上user表中已经取消了passwd字段
updatemysql.user set authentication_string=password('newmima') where user='root'; flush privileges;
退出mysql后,重启mysql,在使用新的密码进入ysql
但是进入后,并没有任何权限
需要重新设定用户(root@’localhost’)的密码,才能正常使用
set password for 'root'@'localhost'=paswwdord('newmima');