我正在尝试将用户的权限授予一个新数据库。
mysql> grant all on db_test.* to 'user_test'@'localhost' identified by 'usersexistingpassword';我得到以下错误
ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'我正在使用MySQL 5.6
mysql> select @@version;
+-------------+
| @@version |
+-------------+
| 5.6.24-72.2 |
+-------------+
1 row in set (0.00 sec)我确实找到了一篇关于在5.6.x及更高版本上更新本机密码的MySQL文章
6.3.9.3远离预-4.1密码散列和mysql_old_password插件https://dev.mysql.com/doc/refman/5.7/en/account-upgrades.html
我运行了他们推荐的命令
mysql> UPDATE mysql.user SET plugin = 'mysql_native_password'
-> WHERE plugin = '' AND (Password = '' OR LENGTH(Password) = 41);
ERROR 1054 (42S22): Unknown column 'plugin' in 'where clause'发布于 2015-06-10 16:44:12
您的问题与mysql.user和升级到MySQL 5.6的方式有关
如果您查看我对不能将特权授予根用户的回答,我将向您展示mysql.user的描述,从MySQL 4.1到MySQL 5.6。
列plugin是mysql.user中的第41列,在MySQL 5.5/5.6中
mysql> SELECT column_name,ordinal_position FROM information_schema.columns
-> WHERE table_schema='mysql' and table_name='user' and column_name='plugin';
+-------------+------------------+
| column_name | ordinal_position |
+-------------+------------------+
| plugin | 41 |
+-------------+------------------+
1 row in set (0.04 sec)
mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 5.6.24 |
+-----------+
1 row in set (0.02 sec)
mysql>该列没有出现在MySQL 5.1、5.0或4.x中。这告诉我,不知怎么的,MySQL已经升级到5.6,但mysql.user仍然从5.1或更高版本。
如果你运行SELECT COUNT(1) column_count FROM information_schema.columns WHERE table_schema='mysql' AND table_name='user';,得到39,我就给你解决了。
请参阅我的文章MySQL服务在尝试向用户授予权限后停止,介绍如何手动修复从5.1到5.6之间的mysql.user。
https://dba.stackexchange.com/questions/103723
复制相似问题