いくつかのテーブルにしかアクセスできないユーザーがいる 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;
この場合、要点は、データ (または少なくともその一部) がライブであるということです。
最初の 2 つのクエリの結果と 3 番目の結合の値が同じである必要があるため、サブクエリを使用しても機能しません。