MySQLauthentication插件未加载

问题:

mysql中设置用户时遇到login问题。 旧用户可以按预期login,对于新创build的用户,我无法login并收到错误消息。

执行SQL:

CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON somedb.* TO 'monty'@'%'; FLUSH PRIVILEGES; 

预计:我现在预计将被允许从我的客户端代码(与已经存在的用户一起工作)中以用户monty身份login。

错误:login失败,并在客户端代码中显示以下错误消息:

 SQLSTATE[HY000] [1524] Plugin '*937217B9DD8E6E458FC3F434BB7292891****' is not loaded' 

更多细节

当我检查mysql.user表时,我看到插件列包含用户的散列密码937217B9DD8E6E458FC3F434BB7292891****

所以我认为auth插件存在错误,并遵循迁移指南( https://dev.mysql.com/doc/refman/5.6/en/account-upgrades.html )。

改变用户

 ALTER USER 'monty'@'%' IDENTIFIED WITH mysql_native_password BY 'some_pass'; 

帮助。 但是,只要我执行flush privileges ,login失败了。

涉及的系统是从mysql / mysql-server构build的docker容器。

 mysql Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using EditLine wrapper 

uname -a:

 Linux 1046ac1aaeee 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 

MySQLauthenticationvars

 mysql> show variables like '%auth' +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | mysql_native_password | | secure_auth | ON | +-------------------------------+-----------------------+ 2 rows in set (0.00 sec) 

如何让新创build的用户永久login(甚至在刷新特权后)?

这个问题在这里解释。

运行mysql_upgrade -u root -p来解决问题。

要么

如果你正在创build用户,并得到这个问题,而不是在你的查询中使用“ BY ”而不是“ WITH ”。

 CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz'; 

原来,这是因为我忘了在重build最新的mysql版本的docker容器后,在数据库上运行mysql_upgrade。

运行一个mysql_upgrade后,一切都按预期工作。 更多信息可以在这里find。 https://bugs.mysql.com/bug.php?id=79622