gpt4 book ai didi

mysql - 有没有更好的方法来为 MySQL 中的临时表分配权限?

转载 作者:可可西里 更新时间:2023-11-01 07:01:49 26 4
gpt4 key购买 nike

我们的用户以相当低级别的用户身份登录生产数据库,在数据库级别授予 SELECT,并在他们需要访问的特定表上授予 INSERT/UPDATE/DELETE。

他们也有创建临时表的权限(我们需要他们来进行一些更复杂的查询)。问题是,虽然他们可以创建临时表,但他们无权将 INSERT 插入其中!

我们发现的一种解决方法是创建一个“真实的”(持久的?)同名表(但只有一个字段)并授予他们插入该表的权限。然后,当创建具有相同名称的临时表时,系统将使用它,而不是持久表。

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'

如果您尝试授予对表的访问权限(在另一个 session 中,作为 root),您不能:

mysql> GRANT INSERT ON testdb.testing TO 'stduser'@'%';
ERROR 1146 (42S02): Table 'testdb.testing' doesn't exist

所以我的问题是,基本上,我们可以在临时表上授予 INSERT/UPDATE/DELETE 权限,而无需使用同名的“持久”表吗?

最佳答案

根据MySQL reference :

MySQL enables you to grant privileges on databases or tables that do not exist. For tables, the privileges to be granted must include the CREATE privilege.

因此,尝试在上面的授权语句中包含 CREATE 权限。

关于mysql - 有没有更好的方法来为 MySQL 中的临时表分配权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com