ユーザーは、データベースレベルでSELECTが付与され、アクセスが必要な特定のテーブルでINSERT / UPDATE / DELETEが付与された、かなり低レベルのユーザーとして本番データベースにログインします。
また、一時テーブルを作成するためのアクセス許可もあります(より複雑なクエリの一部に必要です)。問題は、一時テーブルを作成することはできても、INSERTにアクセスできないことです。
私たちが見つけた回避策は、同じ名前の「実際の」(永続的な?)テーブルを作成し(ただし、フィールドが1つしかない)、そこに挿入するためのアクセスを許可することです。次に、一時テーブルが同じ名前で作成されると、システムは永続テーブルではなく、それを使用します。
mysql> CREATE TEMPORARY TABLE `testing` (`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(30));
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO `testing` (`name`) VALUES ('testing');
ERROR 1142 (42000): INSERT command denied to user 'stduser'@'office.companyname.co.uk' for table 'testing'
(別のセッションで、rootとして)テーブルへのアクセスを許可しようとすると、次のことはできません。
mysql> GRANT INSERT ON testdb.testing TO 'stduser'@'%';
ERROR 1146 (42S02): Table 'testdb.testing' doesn't exist
だから私の質問は、基本的に、同じ名前の「永続的な」テーブルがぶら下がることなく、一時テーブルにINSERT / UPDATE /DELETEを許可できるかどうかです。