ubuntu22.04环境下mysql8.0更改密码踩坑记

参考网上许多教程,基本都执行不了。后参考脚本之家的这篇教程,更改成功,因此做一下笔记。

1、使用service mysqlstop命令关闭mysql-server服务,然后需要设置mysql中的--skip-grant-tables参数来跳过权限认证,通过下面的代码或者在配置文件/etc/mysql/mysql.conf.d/mysqld.cnf末尾里面添加--skip-grant-tables都行。

mysqld -console --skip-grant-tables --shared-memory 

2、在新的终端中使用mysql -uroot直接登录进mysql,使用use mysql选择数据库。执行下面的命令更改root用户的密码加密方式(参考自:MySQL8.0允许外部访问_lemon_cake的博客-CSDN博客):

update user set plugin='mysql_native_password' where user='root';

3、再执行下面的命令将mysql的密码置为空

update user set authentication_string='' where user='root';
quit;

4、在第一步如果执行的是代码,则将改代码的执行中断;如果是改的配置文件,则需要将配置文件末尾添加的--skip-grant-tables注释掉,如下图。之后使用service mysql start启动mysql服务。 

ubuntu22.04环境下mysql8.0更改密码踩坑记_第1张图片

4、使用mysql -uroot -p 命令重新登录mysql,提示输入密码时直接回车即可进入mysql。再执行下面的命令更改mysql密码,使用自定义的新密码替换下面命令中的(新密码)即可

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '(新密码)';  

示例:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';  

5、退出mysql之后使用mysql -uroot -p验证修改是否成功,我的成功截图如下:

ubuntu22.04环境下mysql8.0更改密码踩坑记_第2张图片

 ubuntu22.04环境下mysql8.0更改密码踩坑记_第3张图片

 

注意事项:不能在第3步中直接更改为新密码,从而省略第4步,原因如下:一可能会SQL语句执行不成功,二可能会在此处执行成功,但是在第5步验证更改密码是否成功时会提示这个错误错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
 

你可能感兴趣的:(mysql,数据库)