问题现象:linux环境下,使用命令 mysql -uroot -p 登录mysql(mariadb)数据库时若因为忘记密码而导致密码输入错误时 会出现类似提示:


ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

那么问题来了:Linux环境下忘记mysql(mariadb)数据库的root密码怎么办?

linux环境下 忘记mysql(mariadb) root用户密码,可以采用如下步骤去修改用户密码:

1、将msyql(mariadb)的服务停止

systemctl status mariadb #mariadb服务状态查询 
systemctl status mysql  #mysql服务状态查询
systemctl stop mariadb #停止mariadb服务
systemctl stop mysql #停止mysql服务

2、修改配置文件/etc/my.cnf 设置跳过验证

在【mysqld】节点下 添加配置:skip-grant-tables:

确认配置,保存my.cnf文件。

3、重启mysql 服务

如启动mariadb :systemctl start mariadb

 4、用命令 mysql -uroot 回车 登录 数据库:

可以看到 这个时候 是不需要输入root用户的密码的。

5、跳转数据库,使用mysql数据库:

use mysql;

6、修改root用户密码

update mysql.user set authentication_string=password('root_password') where user='root';

或者是用

update user set password=password('password') where user='root';

 以上两句sql的作用是一致的,此时如果去查询user表的密码字段,是可以成功的,但是如果此时直接退出,并将配置文件/etc/my.cnf文件里的skip-grant-tables去掉,然后使用msyql -uroot -p输入密码 将无法登录。

7、最重要的一步:执行 flush privileges;命令 

 

 只有执行了这句 flush privileges之后才能成功。

8、停止服务

systemctl stop mariadb

9、去掉my.cnf里的skip-grant-tables

10.重启 服务

systemctl start mariadb

此时再次使用mysql -uroot -p去登录就可以发现 输入改过的密码就可以登录进去了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐