前言

最近在网上发布了一个开源简易的考试系统,试运行了几天都没有问题,突然有一天root用户无法登录到mysql了,由于项目也是使用的root用户登录,结果数据库链接提示用户名或者密码错误,项目垮掉。AXB,哪位大仙在坑我,故意改了我的root密码,头大,只有再改回来了。
简单几步搞定问题
关闭MySQL服务
免密登录启动MySQL
免密登录重置密码
登录mysql修改root密码
1、关闭MySQL服务
Linux:
systemctl stop mysql80
windows:
net stop mysql80
2、免密登录启动MySQL
mysqld --console --skip-grant-tables --shared-memory
如果你的服务器中有多个mysql或者你想指定mysql的配置文件,则添加--defaults-file
mysqld --defaults-file="配置文件" --console --skip-grant-tables --shared-memory
如果启动过程中有任何问题,通过--console参数可以清晰的在控制台上显示错误信息。
3、免密登录重置密码
重新打开命令行,之前的不要关,登录mysql
mysql -uroot -P33306 -p
通过-P参数指定mysql端口,默认是3306
enter password的时候直接回车就可以登录到mysql中,再进行密码修改
use mysql;update user set authentication_string='' where user='root';select user,authentication_string from mysql.user;
这时候可以看到root的密码被重置了
4、登录mysql修改root密码
关闭之前免密启动的命令行,以正常服务的方式启动mysql
Linux:
systemctl start mysql80
Windows:
net start mysql80
启动后重新登录mysql,此时mysql的root密码为空,登录后修改
alter user 'root'@'%' identified by '新密码;'flush privileges;
到此为止,你就可以使用root的新密码登录mysql了
后记
所谓条条大路通罗马,方法总比困难多。解决问题的方式有很多种,这里只是其中一种,遇到任何问题可以留言反馈。
给大家填几个坑:
1、mysql的配置文件编码,如果为utf-8 bom注意改回utf-8否则服务启动失败
2、登录mysql使用-P(大P)指定端口号,如果你服务器中有多个mysql实例
3、mysql数据定期备份
4、项目中不要使用root操作数据,可以新建一个用户并授权
5、mysql端口不要使用3306
6、项目配置文件中mysql密码一定要加密处理,数据源配置密码解密,这样配置文件mysql免密就不是明文了




