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)

そのため、更新は選択に失敗すると主張していますが、コマンドの選択部分は単独で機能しているようです。

grants テーブルの関連エントリは次のようになります。

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'@'%'

何が起こっているのですか?

4

1 に答える 1

1

次のコマンドを実行します。

FLUSH PRIVILEGES

mysql データベースの許可テーブルから特権を再ロードします。Unix では、サーバーが SIGHUP シグナルを受信した場合にも発生します。

サーバーは、GRANT、CREATE USER、CREATE SERVER、および INSTALL PLUGIN ステートメントの結果として、情報をメモリにキャッシュします。このメモリは、対応する REVOKE、DROP USER、DROP SERVER、および UNINSTALL PLUGIN ステートメントによって解放されないため、キャッシュを引き起こすステートメントの多くのインスタンスを実行するサーバーでは、メモリ使用量が増加します。このキャッシュされたメモリは、FLUSH PRIVILEGES で解放できます。

ドキュメンテーション: FLUSH

于 2013-03-21T11:59:47.727 に答える