加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-11 23:42:37 所属栏目:MySql教程 来源:网络整理
导读:我们的用户以相当低级别的用户身份登录到生产数据库,在数据库级别授予SELECT,并在他们需要访问的特定表上授予INSERT / UPDATE / DELETE. 他们还有权创建临时表(我们需要它们来处理一些更复杂的查询).问题是虽然他们可以创建临时表,但他们无法访问INSERT! 我

我们的用户以相当低级别的用户身份登录到生产数据库,在数据库级别授予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'

如果您尝试授予对表的访问权限(在另一个会话中,以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.

因此,请尝试在上面的grant语句中包含CREATE权限.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读