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

有什么想法吗?

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 释放此缓存内存。

文档:冲洗

于 2013-03-21T11:59:47.727 回答