UPDATE失败 - SELECT被拒绝

时间:2013-03-21 11:44:06

标签: mysql

我有一个mysql授予问题我无法解决。

mysql>  UPDATE frontier_remote.trident_update SET completed=NOW() WHERE mac_address="00:1b:24:a0:da:e9" AND completed IS NULL;
ERROR 1143 (42000): SELECT command denied to user 'trident_client'@'host-78-147-8-82.as13285.net' for column 'mac_address' in table 'trident_update'
mysql> SELECT mac_address from trident_update WHERE mac_address="00:1b:24:a0:da:e9" and completed is NULL;
+-------------------+
| mac_address       |
+-------------------+
| 00:0:de:ad:be:ef |
+-------------------+
1 row in set (0.04 sec)

因此更新声称在select中失败,但命令的select部分似乎独立工作。

授权表中的相关条目如下所示:

GRANT USAGE ON *.* TO 'trident_client'@'%' IDENTIFIED BY PASSWORD 'shadow_password'
GRANT INSERT, UPDATE ON `frontier_remote`.* TO 'trident_client'@'%'
GRANT SELECT ON `frontier_test`.`trident_update` TO 'trident_client'@'%'

任何想法发生了什么?

1 个答案:

答案 0 :(得分:1)

执行以下命令:

FLUSH PRIVILEGES
  

从mysql数据库中的授权表重新加载权限。上   Unix,如果服务器收到SIGHUP信号,也会发生这种情况。

     

服务器通过GRANT,CREATE将信息缓存在内存中   USER,CREATE SERVER和INSTALL PLUGIN语句。这个记忆不是   由相应的REVOKE,DROP USER,DROP SERVER和   UNINSTALL PLUGIN语句,因此对于执行许多的服务器   导致缓存的语句的实例,会有一个   增加内存使用量。可以使用FLUSH释放此缓存的内存   特权。

文档:FLUSH