lwi*_*lwi 5 mysql authentication
问题:
我在 mysql 中设置用户时遇到登录问题。老用户可以按预期登录,对于新创建的用户,我无法登录并收到错误消息。
执行的SQL:
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON somedb.* TO 'monty'@'%';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
预期: 我现在希望能够从我的客户端代码中以用户 monty 身份登录(适用于现有用户)。
错误:登录失败,我的客户端代码中出现以下错误消息:
SQLSTATE[HY000] [1524] Plugin '*937217B9DD8E6E458FC3F434BB7292891****' is not loaded'
Run Code Online (Sandbox Code Playgroud)
更多细节
当我检查 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';
Run Code Online (Sandbox Code Playgroud)
有帮助。但是,一旦我执行flush privileges此操作,登录就会再次失败。
涉及的系统是一个从 mysql/mysql-server 构建的 docker 容器。
mysql Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using EditLine wrapper
Run Code Online (Sandbox Code Playgroud)
名称-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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
问题
如何让新创建的用户登录永久工作(即使在刷新权限之后)?
小智 5
这个问题在这里解释一下。
运行mysql_upgrade -u root -p以解决问题。
或者
如果您在创建用户时遇到此问题,请在查询中使用BY而不是WITH 。
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';
Run Code Online (Sandbox Code Playgroud)
原来这是因为我在使用最新的 mysql 版本重建 docker 容器后忘记在数据库上运行 mysql_upgrade 。
运行 mysql_upgrade 后,一切都按预期再次运行。更多信息可以在这里找到。https://bugs.mysql.com/bug.php?id=79622
| 归档时间: |
|
| 查看次数: |
62615 次 |
| 最近记录: |