之前在服务器上面安装了一个Mysql数据库,最近想用,可是忘记密码了,于是就各种重置密码,这里整理记录一下。

1. 跳过权限验证

1.1 打开配置文件

vim /etc/my.cnf

1.2 配置文件末尾追加skip-grant-tables

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

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

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 跳过权限验证,第三步的时候删除
skip-grant-tables

1.3 保存并重启Mysql

systemctl stop mysqld //停止服务
systemctl restart mysqld //重启服务
systemctl status mysqld //服务状态查看

2. 将Mysql密码置空

2.1 进入Mysql

mysql -uroot -p

直接回车就可以了,因为已经跳过密码验证
图片.png

2.2 刷新权限

flush privileges;

2.3 密码置空

use mysql;
update user set authentication_string='' where user='root';

2.4 重置密码

这一步也可以在第三步之后进行

# 新密码尽量复杂,否则会提示
alter user 'root'@'localhost' identified by 'New@123';

3. 配置文件还原并重启Mysql

vim /etc/my.cnf

systemctl restart mysqld //重启服务
上一篇 下一篇