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

该教程详细介绍了如何通过servicemysqlstop命令关闭服务,使用--skip-grant-tables跳过权限认证来更改MySQLroot用户的密码。首先更新plugin为mysql_native_password,然后清空密码,接着启动服务并用新密码登录验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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的博客-优快云博客):

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服务。 

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验证修改是否成功,我的成功截图如下:

 

 

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值