grant命令不能在mysql中工作

时间:2016-10-24 14:22:52

标签: mysql

我以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'

为什么不给这里的命令工作?

我在/etc/my.cnf中禁用了skip-name-resolv并且它有效。 http://mysql-forum.ch/archive/index.php?thread-5.html 我认为警告主要是由于使用主机名' master'而不是IP地址。

但是在/etc/my.cnf中设置skip-name-resolv是否合适还是有其他选择吗?

1 个答案:

答案 0 :(得分:2)

那里的grant语句没有错,你正在错误地使用show grants语句。正如show grants上的MySQL文档所说:

  

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

'配置单元' @'主'而且' hive' @'%'用户不同。要显示' hive' @' master'用户的授权,请使用show grants声明中的完整用户帐户名称。