CentOS7系统下修改mysql8.0版本密码

本文详细介绍了在CentOS7系统中,针对MySQL8.0版本忘记密码后的重置流程。包括修改配置文件跳过密码验证、更新用户认证字符串以及重启服务等关键步骤。

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

前言

忘记密码是很常见的操作,今天讲一下linux centos7下mysql8.0版本修改密码的方法。

踩坑

网上很多文章说的是mysql5.x版本的修改密码方法,按照这些方法做就会遇到坑了。

忘记密码了,修改mysql的配置文件/etc/my.cnf,有的人安装目录可能不太一样,配置文件会是/etc/mysql/my.cnf或者其他的目录下。
mysql配置文件
在[mysqld]下面添加一行,可以跳过密码登录

skip-grant-tables

重启mysqld服务

service mysqld restart

输入mysql回车进入mysql命令行,尝试执行

update user set password=password("123456") where user="root";

直接就报语句错误了,看来可能是password函数有问题。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(“123456”) where user=“root”’ at line 1

接着尝试另一个方法。

mysql> ALTER USER 'root'@'*' IDENTIFIED WITH mysql_native_password BY '123456'

也报错,–skip-grant-tables模式下,不能运行这条语句。

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

于是我先查查user表的数据。

select user, password from user

mysql8 user表没有password列
发现user表中根本没有password这个字段,上网查了后发现只有authentication_string,在mysql5.7.9后就废弃了password字段和password()函数。

需要先将authentication_string设置为空

update user set authentication_string = ‘’ where user = ‘root’;

然后退出mysql,删除/etc/my.cnf的skip-grant-tables,重启mysqld服务。

接着尝试登录mysql

mysql -uroot -p

直接回车登录mysql,再使用alter修改用户密码

alter user ‘root’@’%’ indentified by ‘123456’;

提示成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值