2013-03-21 57 views
1

我有一個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) 

因此,更新聲稱在選擇失敗,但命令的選擇部分似乎自行工作。

的相關項的補助金錶是這樣的:

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

執行以下命令:

FLUSH PRIVILEGES 

重新加載從MySQL數據庫授權表的特權。在Unix上,如果服務器收到一個SIGHUP信號,也會發生這種情況。

由於GRANT,CREATE USER,CREATE SERVER和INSTALL PLUGIN語句,服務器在內存中緩存信息。此內存不是由相應REVOKE,DROP USER,DROP SERVER和UNINSTALL PLUGIN語句釋放的 ,因此對於執行導致高速緩存的語句的多個實例的服務器,內存使用量將增加 。這個緩存的內存可以通過FLUSH PRIVILEGES釋放。

文檔:FLUSH

+0

感謝喬斯林,但恐怕這是行不通的。 – 2013-03-21 12:17:15