更改密码后无法登录mysql 5.7.9

Ram*_*avi 2 mysql database-administration

使用EditLine包装器安装了Mysql Ver 14.14 Distrib 5.7.9 for Linux(x86_64) On CentOS Linux 7.1.1503版

我使用此命令更改了root密码:

alter user 'root'@'localhost' identified by 'XXXXXXX';  
flush privileges;
Run Code Online (Sandbox Code Playgroud)

重新登录后

[root@server ~]# mysql -u root -p
Enter password: 
Run Code Online (Sandbox Code Playgroud)

ERROR 1524(HY000):未加载插件'*A6074285732753D325C55AD74E7517CF442C1A81'

Kev*_*nes 18

自早期版本的mySQL(我使用5.7.10)以来,有两件事发生了变化:

  1. systemd现在用来照顾mySQL而不是mysqld_safe(这就是我收到-bash: mysqld_safe: command not found错误的原因 - 它没有安装)

  2. user表结构发生了变化.

因此,要重置root密码,您仍然可以使用--skip-grant-tables选项启动mySQL 并更新user表,但是如何更改它.

1. Stop mysql:
systemctl stop mysqld

2. Set the mySQL environment option 
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. Start mysql usig the options you just set
systemctl start mysqld

4. Login as root
mysql -u root

5. Update the root user password with these mysql commands
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

6. Stop mysql
systemctl stop mysqld

7. Unset the mySQL envitroment option so it starts normally next time
systemctl unset-environment MYSQLD_OPTS

8. Start mysql normally:
systemctl start mysqld

Try to login using your new password:
7. mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

参考

http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html所述,

注意

从MySQL 5.7.6开始,对于使用RPM分发的MySQL安装,服务器启动和关闭由systemd在几个Linux平台上管理.在这些平台上,不再安装mysqld_safe,因为它是不必要的.有关更多信息,请参见第2.5.10节"使用systemd管理MySQL服务器".

这将带你到http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html,它提到systemctl set-environment MYSQLD_OPTS=了页面的底部.

密码重置命令位于http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html的底部