【发布时间】:2010-09-04 23:30:42
【问题描述】:
我有一个 MySQL 数据库,其中一个用户只能访问几个表。该用户已被授予此数据库的CREATE TEMPORARY TABLES,通过查看查询日志,我可以看到他们创建了一个临时表,然后在尝试从中选择时失败。执行GRANT SELECT ON TABLE 'db'.'tmp_tbl' TO 'user'@'localhost'; 不起作用,因为此时该表不存在。
The user comments on this page 建议使用 hack 来执行此操作,但我希望会有更好的方法。
使用它的代码是这样的:
CREATE TEMPORARY TABLE t1 SELECT id FROM real1 LIMIT 10;
CREATE TEMPORARY TABLE t2 SELECT id FROM real2 LIMIT 10;
SELECT * FROM t1;
SELECT * FROM t2;
SELECT * FROM t1 JOIN t2 JOIN real3 AS r ON t1.id = r.a AND t2.id = r.b;
在这种情况下,重点是数据(或至少其中一部分)是实时的。
我需要前两个查询的结果和第三个查询的值相同,因此无法使用子查询。
【问题讨论】:
标签: mysql sql temp-tables sql-grant