0%

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

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

1.使用skip-grant-tables取消授权登录 [bash] vi /etc/my.cnf 在mysqld下面添加 skip-grant-tables [mysqld] skip-grant-table [/bash] 2.重启mysqld [bash] sudo /etc/init.d/mysqld restart [/bash] 3.此时不需要密码就能进入mysql交互界面 [bash] [root@ichenfei ~]# mysql mysql> [/bash] 4.命令行修改root [bash] 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。 [/bash] 5.重启mysqld后就能使用新设置的密码登录了. [bash] sudo /etc/init.d/mysqld restart mysql -uroot -ppassword [/bash] 再进入MySQL操作提示, 这是因为,自MySQL 5.7开始,密码存在有效期的概念, 同时因为安全等级的问题,需要使用使用其它的方式进行设置。 [bash] ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. [/bash] 可以通过 [bash] ALTER USER USER() IDENTIFIED BY ‘password’; [/bash] 修改密码 报错: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 这和密码的安全等级相关,此时先设置成包含大小写+特殊字符的密码。 查看安全等级命令如下: [bash] 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 | +———————————————————+————+ [/bash] 通过 SET GLOBAL validate_password_policy=’LOW’; 命令,降低安全等级后,就可以直接使用,限制是必须8个字符以上; 关于安全等级更详细的介绍如下:* LOW 只测试密码长度。 密码必须至少有8个字符长。