如果我给用户表权限,我是不是也需要给他们一个数据库角色

Posted

技术标签:

【中文标题】如果我给用户表权限,我是不是也需要给他们一个数据库角色【英文标题】:If I give a user table privileges do i need to give them a database role as well如果我给用户表权限,我是否也需要给他们一个数据库角色 【发布时间】:2020-08-24 14:27:57 【问题描述】:

我有一个数据库,想分配角色和权限。

我的目标是允许多个用户——所有人都拥有相同的权限——能够创建、编辑和查看表格(就是这样)。

我了解用户表权限允许用户Create, alter, drop and delete 表中的项目。但我也明白有一个 resource user 允许用户执行相同操作的预定义角色。

我会同时提供这两个角色吗?表级权限和预定义角色?如果我同时提供两者会发生什么?可以吗?

【问题讨论】:

你能澄清一下在这种情况下你所说的“alter”和“drop”是什么意思吗? alterdrop 是 DDL 命令,可让您修改表的结构或从数据库中删除表。这些不是对象级别的权限,并且与表中的行无关。您真的是指“选择、插入、更新和删除表中的行”吗? 不同的数据库产品有不同的组织方式。在 Oracle 中,每个用户都拥有一个“模式”(他们自己创建的所有表、索引、过程等)。用户通常(但不总是!)被授予对他们自己的模式的广泛特权,而对其他人的模式则很少有特权。 在哪里您希望“所有”用户能够编辑和查看表格?每个都在自己的架构中,还是您想为“通用”对象创建“通用”架构,并仅授予用户对该架构中对象的权限? 但是如果我向用户提供资源用户角色,那不会允许用户更改数据库上的所有表吗? 允许用户更改所有表是一个巨大的安全风险。你到底为什么会考虑允许除了 DBA 之外的任何人? 老实说,这个问题更像是一个“我能不能”——它甚至会提出一个不同类型的问题(或者我什至应该)。我只是觉得奇怪为什么会有角色和表权限,所以如果我向用户提供资源用户角色,那不会允许用户更改数据库上的所有表,那么即使有表又有什么意义呢?级别权限? 【参考方案1】:

这更像是一个数据库管理问题,因为您拥有开发自己的表的用户。您的问题的核心是“一刀切”角色RESOURCE 或更好的为您的用户组定制的解决方案实际上是管理风格、品味和您的特殊情况之一。

我个人不喜欢RESOURCE这个角色,因为它没有CREATE VIEW的特权。

请注意,CREATE TABLE 权限(直接授予或通过角色授予)允许用户在他/她自己的架构中创建表。要在其他模式中创建表(或“数据库上的所有表”),您需要权限CREATE ANY TABLE。详情请见documentation。

【讨论】:

以上是关于如果我给用户表权限,我是不是也需要给他们一个数据库角色的主要内容,如果未能解决你的问题,请参考以下文章

给 MySQL 用户有限的权限

Liferay 6.1中如何从用户组继承站点角色权限给他们的成员?

MySQL我创建一个只能备份的权限需要勾选哪些,cmd命令创建用户并给权限也行的

您是不是更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次?

Web.config上写入权限的安全问题

MySQL 用户管理