【Mysql8】忘记数据库root密码的情况下,如何进入mysql?

自从安装了mysql8之后,强制设置很复杂的密码,导致root密码非常容易忘记,那么如何在忘记数据root账号密码的情况下进入root呢?
首先确保自己有系统的root权限,可以进行sudo操作!
首先确保自己有系统的root权限,可以进行sudo操作!
首先确保自己有系统的root权限,可以进行sudo操作!

修改mysql配置

打开mysql的配置文件:

sudo vim /etc/my.cnf

在配置文件中,最末尾添加skip-grant-tables这一行,让mysql可以免密码登录:

....
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables

保存退出。

重启mysql服务

有两种重启服务的方法:

  1. 直接运行sudo service mysqld restart,输入密码后,就重启了。
  2. 如果第一种方法失败,那么找到所有mysql的进程,依次kill掉,再启动,命令如下:
ps -ef | grep mysql | awk '{print $2}' | xargs kill -9
sudo service mysqld start

PS:如果启动不了,就根据报错上网查一查,确保自己配置文件是对的,不要写错了

登录mysql并删除root密码

直接输入如下命令,再直接回车,即可使用root用户进入数据库:

mysql -u root -p

先查看一下root用户是否存在密码:

mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;

查看表格中root用户的authentication_string字段是否为空,如果不为空,则修改为空:

mysql> update user set authentication_string='' where user='root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

修改成功后,退出mysql。
接着修改mysql配置文件/etc/my.cnf,把刚才加的skip-grant-tables删掉,并使用命令sudo service mysqld restart重启mysql服务。
接着,由于刚才删除了root密码,所以这时候就可以使用root用户登录而且不需要密码了:

mysql -u root -p

直接回车就可以进去数据库了。

修改数据库的root密码

在修改密码之前,可以先看一下mysql8密码政策
默认的MEDIUM级别的,需要密码里面有数字、大小写字母和特殊字符,且长度不小于8。
作为开发人员,开发环境当然是越简单越好,所以需要修改安全策略。

修改mysql8的密码安全策略

使用root权限进入数据库之后,先查看一下跟密码有关的几个环境变量:

mysql> SHOW VARIABLES LIKE 'validate_password.%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

看到默认的密码安全级别是MEDIUM,我们改为LOW

mysql> set global validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)

LOW的策略只有长度要求,就是不小于8。

修改密码

可以愉快的修改密码了:

mysql> flush privileges;
Query OK, 0 rows affected (0.05 sec)
mysql>alter user 'root' identified by 'root1234';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;

至此,root密码就修改完成了!不得不说mysql8,修改root密码可以说是非常麻烦了!

    原文作者:梦醒天阑
    原文地址: https://www.jianshu.com/p/4321a385997b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞