Mysql 密码哈希在 myql.user Table 中保存到插件列中

Mysql Password Hash Gets Saved Into Plugin Column in myql.user Table

我是 运行 MySQL 本地 iMac (OS X 10.11.1),通过 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 table 我可以看到以下内容:

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

这显然是错误的,但我不知道为什么以及如何解决这个问题。这只是最近才发生的,之前创建的所有用户都已正确添加到 table,其中插件列按预期读取 mysql_native_password,密码哈希位于密码列中,而不是插件列中。

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

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

更奇怪的是:我的同事在她的 iMac 上有完全相同的设置和同样的问题,而我在我的 MacBook Air 上也有相同的设置但运行正常......在它上面我可以毫无问题地创建用户并且一切都得到了写入正确的列。

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