MySQL中的授权命令无法工作

3

我已经以root身份登录,并输入以下命令

GRANT ALL PRIVILEGES ON *.* TO 'hive'@'master'  WITH GRANT OPTION;

结果是

Query OK, 0 rows affected, 1 warning (0.00 sec)

警告信息为:

Warning | 1285 | MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work

然后我检查了用户'hive'的授权

mysql> show grants for hive;
+-----------------------------------------------------------------------------------------------------+
| Grants for hive@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hive'@'%' IDENTIFIED BY PASSWORD '*4DF1D66463C18D44E3B001A8FB1BBFBEA13E27FC' |
+-----------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

我尝试了一下

show grants for 'hive'@'master' 
ERROR 1141 (42000): There is no such grant defined for user 'hive' on host 'master'

为什么grant命令在这里不起作用?


我在/etc/my.cnf中禁用了skip-name-resolv,它就可以工作了。 http://mysql-forum.ch/archive/index.php?thread-5.html 我认为警告主要是由于使用主机名“master”而不是IP地址引起的。

但是,在/etc/my.cnf中禁用skip-name-resolv是否合适?还是有其他选择?


看起来这个操作成功了。你收到了什么警告信息? - undefined
警告显示:“MySQL以--skip-name-resolve模式启动;您必须在重新启动时去掉此开关,才能使此授权生效。” - undefined
我在8.0.21版本中仍然遇到了这个问题。看起来像是一个bug。请参考:https://bugs.mysql.com/bug.php?id=97399 - undefined
1个回答

4

这里的授权语句没有问题,你是在错误地使用了show grants语句。正如MySQL关于show grants的文档所说:

要命名帐户,请使用与GRANT语句相同的格式;例如,'jeffrey'@'localhost'。如果您仅指定帐户名称的用户名部分,则使用主机名部分为“%”。

'hive'@'master'和'hive'@'%'用户是不同的。要显示'hive'@'master'用户的授权,请在show grants语句中使用完整的用户帐户名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接