MySQL5.7忘记root密码解决方法

1.使用skip-grant-tables取消授权登录

vi /etc/my.cnf

在mysqld下面添加 skip-grant-tables
[mysqld]
skip-grant-table

2.重启mysqld

sudo /etc/init.d/mysqld restart

3.此时不需要密码就能进入mysql交互界面

[root@ichenfei ~]# mysql
mysql>

4.命令行修改root

mysql> update mysql.user set authentication_string=password('password') where user='root' and Host = 'localhost';
mysql> flush privileges;
mysql> quit;
'password'为要设置的密码
MySQL 5.7将password替换成了authentication_string. 5.7之前使用password。

5.重启mysqld后就能使用新设置的密码登录了.

sudo /etc/init.d/mysqld restart
mysql -uroot -ppassword

再进入MySQL操作提示,
这是因为,自MySQL 5.7开始,密码存在有效期的概念, 同时因为安全等级的问题,需要使用使用其它的方式进行设置。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

可以通过

ALTER USER USER() IDENTIFIED BY 'password';  

修改密码
报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这和密码的安全等级相关,此时先设置成包含大小写+特殊字符的密码。
查看安全等级命令如下:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| 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      |
+--------------------------------------+--------+

通过 SET GLOBAL validate_password_policy=’LOW’; 命令,降低安全等级后,就可以直接使用,限制是必须8个字符以上;

关于安全等级更详细的介绍如下:

  • LOW 只测试密码长度。 密码必须至少有8个字符长。
  • MEDIUM 密码必须包含至少1数字字符,1大写和小写字符,和1特殊字符。
  • STRONG 密码子字符串长度为4的或更长时间不能匹配 单词在字典文件中,如果一个人被指定。
  • 关于密码有效期相关的更多信息。
    http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html

    未经允许不得转载:晨飞小窝 » MySQL5.7忘记root密码解决方法

    赞 (1)

    评论 0