我以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是否合适还是有其他选择吗?
答案 0 :(得分:2)
那里的grant语句没有错,你正在错误地使用show grants
语句。正如show grants上的MySQL文档所说:
要为帐户命名,请使用与GRANT语句相同的格式;例如,' jeffrey' @' localhost'。如果您仅指定帐户名称的用户名部分,则主机名部分为'%'使用。
'配置单元' @'主'而且' hive' @'%'用户不同。要显示' hive' @' master'用户的授权,请使用show grants
声明中的完整用户帐户名称。