mysql 身份验证插件未加载

mysql 身份验证插件未加载

问题:

我在 mysql 中设置用户时遇到登录问题。旧用户可以正常登录,但对于新创建的用户,我无法登录并收到错误消息。

执行的 SQL:

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

预期的: 我现在希望被允许从我的客户端代码以用户 monty 身份登录(适用于已经存在的用户)。

错误:登录失败,我的客户端代码中出现以下错误消息:

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登录又失败了。

涉及的系统是由mysql/mysql-server构建的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

mysql 身份验证变量

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

问题

如何让新创建的用户登录永久工作(即使在刷新权限之后)?

答案1

此处解释了此问题这里

运行mysql_upgrade -u root -p以修复该问题。

或者

如果您正在创建用户并遇到此问题,请使用经过代替在您的查询中。

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

答案2

事实证明这是因为我忘记在使用最新的 mysql 版本重建 docker 容器后在数据库上运行 mysql_upgrade。

运行 mysql_upgrade 后,一切都恢复正常。更多信息可在此处找到。https://bugs.mysql.com/bug.php?id=79622

相关内容