自从安装了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服务
有两种重启服务的方法:
- 直接运行
sudo service mysqld restart
,输入密码后,就重启了。 - 如果第一种方法失败,那么找到所有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密码可以说是非常麻烦了!