MySQL5.7忘记root密码
Ubuntu
方式1:
① 停止MySQL服务
sudo service mysql stop
② 修改MySQL配置文件
sudo vim /etc/mysql/my.cnf
在 [mysqld] 下增加 skip-grant-tables
保存退出
③ 启动MySQL服务
sudo service mysql start
④ 直接登录MySQL
mysql
,回车
⑤ 修改root用户密码
UPDATE mysql.user SET authentication_string = password('112233') where user = 'root';
⑥ 刷新权限
FLUSH PRIVILEGES;
⑦ 退出
exit
⑧ 停止MySQL服务
sudo service mysql stop
⑨ 修改MySQL配置文件
sudo vim /etc/mysql/my.cnf
在 [mysqld] 下删除 skip-grant-tables
保存退出
⑩ 启动MySQL服务,正常使用
sudo service mysql start
方式2:
① 停止MySQL服务
sudo service mysql stop
② 跳过权限表验证的方式启动MySQL
/usr/bin/mysqld_safe --skip-grant-tables
此时会启动守护进程:
2022-05-28T15:39:22.689270Z mysqld_safe Logging to syslog.
2022-05-28T15:39:22.691662Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2022-05-28T15:39:22.708161Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
若出现类似错误:
2022-05-28T15:15:36.377410Z mysqld_safe Logging to syslog.
2022-05-28T15:15:36.379927Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2022-05-28T15:15:36.382318Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
解决方式:
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
③ 打开新的shell,直接登录MySQL
mysql
,回车
④ 修改root用户密码
UPDATE mysql.user SET authentication_string = password('112233') where user = 'root';
⑤ 刷新权限
FLUSH PRIVILEGES;
⑥ 退出
exit
⑦ kill掉 mysqld_safe
进程
pgrep -f mysqld_safe | xargs kill -9
⑧ 启动MySQL服务,正常使用
sudo service mysql start
Windows
① 停止MySQL服务,管理员打开cmd
net stop mysql
② 跳过权限表验证的方式启动MySQL
mysqld --skip-grant-tables
之后该窗口将无法再继续操作
③ 打开新的cmd,直接登录MySQL
mysql
,回车
④ 修改root用户密码
UPDATE mysql.user SET authentication_string = password('112233') where user = 'root';
⑤ 刷新权限
FLUSH PRIVILEGES;
⑥ 退出
exit
⑦关闭运行临时跳过权限表启动的MySQL窗口
⑧启动MySQL服务,管理员打开cmd
net start mysql
⑨正常登陆mysql
mysql -u root -p