linux下mysql-5.7 忘记root密码,重置root密码详细过程

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。

2.修改MySQL的登录设置:

vi /etc/my.cnf  

在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。

skip-grant-tables  的意思是跳过权限验证,不用验证就操作MYSQL。

3.重新启动mysqld

# service mysqld restart

 

4.登录并修改MySQL的root密码

# mysql -u root

或者

 # mysql

 

进入mysql后

  1. mysql> SHOW VARIABLES LIKE 'vali%';

  2. +--------------------------------------+--------+

  3. | Variable_name                        | Value  |

  4. +--------------------------------------+--------+

  5. | validate_password_dictionary_file    |        |

  6. | validate_password_length             | 8      |

  7. | validate_password_mixed_case_count   | 1      |

  8. | validate_password_number_count       | 1      |

  9. | validate_password_policy             | MEDIUM |

  10. | validate_password_special_char_count | 1      |

  11. +--------------------------------------+--------+

  12. 6 rows in set (0.00 sec)

根据官方文档可以发现策略为1,即MEDIUM 

5.7默认会安装这个插件,若没有安装,则SHOW VARIABLES LIKE 'vali%'则会返回空。对应参数的value值也为默认值,以下是这些值的解释

  1.  validate_password_length 8 # 密码的最小长度,此处为8。

  2.  validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。

  3.  validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。

  4.  validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应:

  5. 【0/LOW】:只检查长度。

  6. 【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。

  7. 【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。

  8.  validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1。

所以你更改密码必须满足:数字、小写字母、大写字母 、特殊字符、长度至少8位

怎么改呢??

想要关闭这个插件,则在配置文件中加入 validate_password=off   并重启mysqld即可:

在 vim /etc/my.cnf配置文件中增加

  1. [mysqld]

  2. validate_password=off

然后重启mysql 就 ok了.

重新启动mysqld

#/etc/init.d/mysqld restart ( service mysqld restart )

重如果想把密码改回来 进入mysql 执行 5.7的数据库没有了password字段 用的是authentication_string字段

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

 

5.将MySQL的登录设置修改回来

# vi /etc/my.cnf

 

将刚才在[mysqld]的段中加上的skip-grant-tables删除

保存并且退出vi。

6.重新启动mysqld

# /etc/init.d/mysqld restart  ( service mysqld restart )

 

 

 

你可能感兴趣的:(linux,学习笔记)