2013-03-21 4 views
1

У меня проблема с грантами mysql, я не могу работать.UPDATE failed - SELECT denied

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. On Unix, это также происходит, если сервер получает сигнал SIGHUP.

Сервер кэширует информацию в памяти в результате GRANT, CREATE USER, CREATE SERVER и INSTALL PLUGIN. Эта память не , выпущенная соответствующими операторами REVOKE, DROP USER, DROP SERVER и UNINSTALL PLUGIN, поэтому для сервера, на котором выполняется множество экземпляров операторов, вызывающих кеширование, будет увеличиваться использование памяти . Эта кэшированная память может быть освобождена с помощью FLUSH PRIVILEGES.

Документация: FLUSH

+0

Благодаря Джоселин, но я боюсь, что это не работает. –