系统:CentOS7,mysql版本:5.7.28
首先需要停止mysql服务
[root@caomou1 ~]# systemctl stop mysqld.service
然后给systemctl环境变量MYSQLD_OPTS设置参数
[root@caomou1 ~]# systemctl set-environment MYSQLD_OPTS='--skip-grant-tables --skip-networking'
再重启mysql服务
[root@caomou1 ~]# systemctl start mysqld
此时mysql不需要密码就可以登录,下面直接登录root
[root@caomou1 ~]# mysql -uroot
修改user表中的root用户密码
update mysql.user set authentication_string=password('newpassword') where user = 'root' and host='%';
我的host之前被我改成了%,默认状态下可能是localhost
退出mysql,在终端中将环境变量MYSQLD_OPTS的参数设置为空
[root@caomou1 ~]# systemctl set-environment MYSQLD_OPTS=''
重启mysql服务
[root@caomou1 ~]# systemctl restart mysqld
最后正常登录即可