windows及Linux系统的mysql5.7和mysql8.0数据库密码重置
本文基于mysql数据库,分析不同版本mysql数据库的密码重置问题。
版本差异
Mysql数据库的历史版本中,5.7以下版本初始密码为空, 5.7以上版本数据库初始化完成后,会自动生成一个 root@localhost 用户,root 用户的密码不为空,而是随机产生一个密码,默认连接使用 SSL 的加密方式。对于Mysql5.7 版本,其将于2023年10月31日停止支持,后续官方将不再进行后续的代码维护。目前在市场中,主流使用均为Mysql8.0版本,因此本文会依据8.0和5.7版本分别进行说明。
处理过程
windows系统的mysql5.7版本密码重置
配置环境:win10系统
1、停止MySQL服务。在“开始”菜单输入“服务”,可以通过“服务”应用程序找到MySQL服务,并停止它。
2、使用CMD命令提示符,运用管理员权限进入MySQL的安装目录的bin文件夹。
3、启动MySQL服务,同时跳过授权表,执行以下命令
mysqld.exe --skip-grant-tables
4、用管理员权限再打开一个命令窗口(原窗口不能关闭),再次进入MySQL的bin目录,然后启动MySQL客户端:
mysql.exe -u root
5、刷新权限并重置root用户密码。在MySQL命令行中执行以下命令(图7):
use mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
6、这时候注意在进程里杀掉“mysqld.exe”,否则mysql服务重启不成功。
7、这时进入mysql(不需要cmd的管理员权限),输入重置后的新密码,即可成功登录。
windows系统的mysql8.0版本密码重置
8.0版本和5.7版本配置基本一致,只是在第3步跳过授权表时,采用新的命令:
mysqld --console --skip-grant-tables --shared-memory
(三)linux环境下的mysql5.7版本密码重置
配置环境:centos7系统
Mysql在安装后,会存在一个初始密码存放在mysqld.log文件中,使用
grep 'temporary password' /var/log/mysqld.log
可以查看初始密码。
1、输入命令vim /etc/my.cnf,进入mysqld。按i插入:skip-grant-tables,然后按“:”后,wq保存退出。
2、重启mysqld服务:
service mysqld restart
3、这时进入mysql,输入命令:
mysql -uroot -p
就不需要密码了。
4、使用
use mysql
select * from user
确认当前为mysql数据库及root用户名和密码字段。
5、使用命令:
update user set authentication_string=password("你想用的新密码") where user='root';
然后保存。
6、进入my.cnf删除skip-grant-tables之后,进入mysql,使用刚才新的密码登录即可。
linux环境下的mysql8.0版本密码重置
8.0版本和5.7版本在linux下命令相同。
综上所述,mysql密码重置主要是通过mysqld来跳过密码验证,进入mysql后使用mysql语句重置或修改密码。