mysql如何重置root密码
- 忘记root密码不用慌,本文以 mysql 5.7 为例介绍如何重置root密码。
Linux系统
- 第1步,杀掉 mysql 进程
ps -ef | grep -v grep | grep mysql | grep 3306 | awk '{print $2}' | xargs kill -9
- 第2步,添加参数 --skip-grant-tables 跳过权限表模式启动
注:若无 mysqld_safe 文件可尝试在 /etc/my.cnf 的 [mysqld] 添加 skip-grant-tables 再启动服务
/opt/mysql/bin/mysqld_safe --defaults-file=/data/mysql_3306/my_3306.cnf --skip-grant-tables &
- 第3步,以任意密码登录 mysql 实例,示例改为 Admin_147
[root@localhost]# mysql -uroot -p123456 -S /tmp/mysql_3306.sock
mysql> #.先flush一下权限再重置密码
mysql> flush privileges;
mysql> alter user 'root'@'localhost' identified by 'Admin_147';
mysql> #.最后再flush一下
mysql> flush privileges;
mysql> exit
- 第4步,杀掉 mysql 进程
ps -ef | grep -v grep | grep mysql | grep 3306 | awk '{print $2}' | xargs kill -9
- 第5步,正常启动 mysql 进程
/opt/mysql/bin/mysqld_safe --defaults-file=/data/mysql_3306/my_3306.cnf &
- 第6步,使用新密码登录 mysql 实例,示例 Admin_147
mysql -uroot -pAdmin_147 -S /tmp/mysql_3306.sock
Windows系统
- 第1步,以管理员身份运行cmd,并停止运行的mysql服务
net stop mysql57
- 第2步,跳过权限检查启动mysql(不要关掉cmd窗口)
注:若无 mysqld_safe 文件可尝试在 /etc/my.cnf 的 [mysqld] 添加 skip-grant-tables 再启动服务
c:\opt\mysql\bin\mysql.exe --defaults-file="d:\mysql_3406\my_3406.ini" --skip-grant-tables
- 第3步,重开一个cmd窗口(以管理员身份运行,密码为空),重置root用户密码(5.7之前为password字段)
c:\opt\mysql\bin\mysql.exe -uroot -p
mysql> update mysql.user set authentication_string=PASSWORD('Admin_147') where user='root' and host='localhost';
mysql> flush privileges;
mysql> quit;
- 第4步,关掉第2步打开的cmd窗口并在任务管理器杀掉mysqld进程,然后启动mysql服务
tasklist | find /I "mysqld.exe"
taskkill /F /IM mysqld.exe
net start mysql57
- 第5步,使用新密码登录
mysql.exe -uroot -pAdmin_147