Mysql密码哈希获取保存到myql.user表中的插件列

时间:2015-12-02 12:29:41

标签: mysql phpmyadmin

我在我的iMac(OS X 10.11.1)上本地运行MySQL,通过Homebrew安装(目前它是mysql版本5.7.9)。我也通过Homebrew安装了Phpmyadmin(目前版本4.5.1,因为4.5.2尚未通过Homebrew提供)。这是问题所在:

当我使用以下语法创建新用户(无论是通过命令行还是phpmyadmin)时:

CREATE USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass';

或使用默认的phpmyadmin语法:

CREATE USER 'test1'@'%' IDENTIFIED WITH mysql_native_password AS '***';

创建的用户确实在phpmyadmin中显示没有密码。在检查mysql.user表后,我可以看到以下内容:

Host | User | Password | (...) | x509_subject | (...) | plugin | (...) % | test1 | (empty) | (...) | [BLOB-1 B] | (...) | (Pass Hash) | (...)

这显然是错误的,但我无法弄清楚为什么以及如何解决这个问题。这只是最近刚刚发生的所有用户都已正确添加到表中,其中插件列按预期读取mysql_native_password,密码哈希位于密码列中,而不是插件列中。

我发现这篇文章提出了类似的问题:"Plugin '0' is not loaded"

然而,由于我仍然能够毫无问题地登录所有以前创建的用户,我认为这只是一个类似的问题,但不完全相同。

更奇怪的是:我的同事在她的iMac上有完全相同的设置和同样的问题,而我在MacBook Air上也有相同的设置但行为正确但是...在它上面我可以创建用户没有问题,所有内容都被写入正确的列。

1 个答案:

答案 0 :(得分:2)

由于您的mysql.user表对于MySQL 5.7来说是非标准的,您可能想要更新它。推荐的方法是mysql_upgrade实用程序,请参阅http://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html