一、用安全模式启动mysql
在 my.ini(windows的安装目录)或 /etc/my.cnf(linux) 的最后一行添加
skip-grant-tables=1
重启mysql服务
systemctl restart mysqld
二、创建admin用户
免密码使用root登录进去
$ mysql -uroot
创建一个admin用户,并赋予所有权限
# 先刷新权限,不然会报错--skip-grant-tables选项下无法执行命令
flush privileges;
# 创建新用户,并将host设置为%(即允许所有ip连接)
create user 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Qwe@123456_';
# 授予所有权限
GRANT ALL ON *.* TO 'admin'@'%';
# 刷新权限
flush privileges;
三、修改user表root用户信息
1.退出安全模式
移除skip-grant-tables,重启mysql服务
2.使用admin登录
$ mysql -u admin -p Qwe@123456_
将root用户的 host, plugin, authentication_string 改成与admin相同;
update mysql.user set
host='%',
pulgin='mysql_native_password',
authentication_string='**admin用户的该字段值'
where user='root';
# 刷新权限
flush privileges;
3.使用root登录
mysql -u root -p Qwe@123456_
# 修改root密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '{密码}';
# 删除admin用户
drop user 'admin'@'%';
# 刷新权限
flush privileges;
示例mysql版本
mysql-8.0.36-1.el8.x86_64