У меня есть MySQL DB с пользователем, который имеет доступ только к нескольким таблицам.Этому пользователю было предоставлено CREATE TEMPORARY TABLES
для этой базы данных, и, просматривая журналы запросов, я вижу, как они создают временную таблицу, а затем отказывают при попытке выбрать из нее.Выполнение GRANT SELECT ON TABLE 'db'.'tmp_tbl' TO 'user'@'localhost';
не работает, так как в этот момент таблицы не существует.
Комментарии пользователей на этой странице предлагают взломать это, но я ожидал, чтобыть лучше.
Код, который использует это, вроде как:
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;
В этом случае, весь смысл в том, что данные (или, по крайней мере, некоторые изон) является живым.
Мне нужны результаты первых двух запросов, и значения для объединения в третьем должны быть одинаковыми, поэтому использование подзапросов не будет работать.