I have a MySQL DB with a user that has access only a few tables. This user has been granted CREATE TEMPORARY TABLES
for this database and by watching the query logs, I can see them create a temporary table and then fail while trying to select from it. Doing GRANT SELECT ON TABLE 'db'.'tmp_tbl' TO 'user'@'localhost';
doesn't work as the table doesn't exist at that point.
The user comments on this page suggest a hack to do this but I would have expected there to be a nicer way.
The code that uses this is sorta like this:
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;
In this case, the whole point is that the data (or at least some of it) is live.
I need the results from the first two queries and the values for the join in the third to be the same so using sub queries won't work.