环境:
linux:centos7.3
mysql:mysql8.0.25
步骤:
先修改配置文件
/etc/my.cnf
在[mysqld]
加入skip-grant-tables
重启mysql
systemctl restart mysqld
无密码登入mysql
mysql -uroot -p
切换到mysql库
use mysql
将root密码设置为空
update user set authentication_string=‘‘ where user=‘root‘;
退出mysql
修改配置文件,删掉skip-grant-tables
重启mysql
这时仍然可以无密码登入mysql
mysql -uroot -p
修改mysql 密码
alter USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘ABC@efg2021‘;
flush privileges;
退出mysql 用新密码登录即可
特别说明的是:
1、alter USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘ABC@efg2021‘; 语句
mysql8.0 在skip-grant-tables模式下 是不可以使用的,会报错。
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
2、在将root密码设置为空,这一步如果直接设定密码,
update user set authentication_string=‘ABC@efg2021‘ where user=‘root‘;
在mysql里面会提示成功,但是当取消skip-grant-tables模式,重启mysql后,使用该密码仍是不能登录mysql
包括用其他其他语句直接修改root密码的(可能有我没试到过的把)。退出skip-grant-tables模式后,该密码都不能登录。所以将密码设为空这一步不能少。