Unsere Benutzer melden sich als recht niedriger Benutzer in der Produktionsdatenbank an, wobei SELECT auf Datenbankebene gewährt wird und INSERT/UPDATE/DELETE für die spezifischen Tabellen erteilt wird, auf die sie zugreifen müssen.Gibt es eine bessere Möglichkeit, Berechtigungen für temporäre Tabellen in MySQL zuzuweisen?
Sie haben auch Berechtigungen zum Erstellen temporärer Tabellen (wir brauchen sie für einige der komplizierteren Abfragen). Das Problem ist, dass sie zwar die temporären Tabellen erstellen können, aber keinen Zugriff auf sie haben!
Eine Problemumgehung, die wir gefunden haben, besteht darin, eine "echte" (persistente?) Tabelle desselben Namens (aber mit nur einem Feld) zu erstellen und ihnen Zugriff zu gewähren. Wenn die temporäre Tabelle mit demselben Namen erstellt wird, verwendet das System diese nicht die persistente Tabelle.
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'
Wenn Sie versuchen, Zugriff auf die Tabelle zu gewähren (in einer anderen Sitzung, als root), können Sie nicht:
mysql> GRANT INSERT ON testdb.testing TO 'stduser'@'%';
ERROR 1146 (42S02): Table 'testdb.testing' doesn't exist
Also meine Frage ist, im Grunde können wir INSERT gewähren/UPDATE/DELETE bei temporären Tabellen, ohne dass eine "persistente" Tabelle mit demselben Namen herumhängt?
erstellen Ich habe gerade dies in der Testumgebung versucht, und Sie sind in der Tat richtig! Schade, dass Sie CREATE (nicht nur CREATE TEMPORARY TABLES) zu gewähren, aber vielen Dank. – Drarok