database - 限制用户只能访问 Oracle SQL Developer 中自己的表

标签 database oracle11g privileges oracle-sqldeveloper database-permissions

我对 SQL Oracle Developer 中的权限和特权感到困惑。创建的用户可以访问所有模式/用户的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。任何人都可以指定我如何执行此任务。

我的意思是从系统权限中选择哪些权限让用户只能访问自己的表。谢谢

最佳答案

用户只有在满足以下条件时才拥有对其架构之外的表的权限

  • 每个表的对象级权限已授予用户(直接或通过角色),或者
  • 系统级权限已授予用户(直接或通过角色),允许他们访问特定类型的所有对象。

如果用户已被授予系统级权限(即SELECT ANY TABLE),您可以撤销系统级权限。如果用户已被授予对每个表的显式权限,则您需要撤销对每个表的权限。

我的猜测是,用户已被授予包含一个或多个ANY 系统权限的角色(可能是DBA 角色)。如果是这种情况,您需要撤销用户的角色或撤销角色的权限。

授予用户哪些角色?

SELECT granted_role
  FROM dba_role_privs
 WHERE grantee = <<the user name>>

授予用户哪些系统权限?

SELECT privilege
  FROM dba_sys_privs
 WHERE grantee = <<the user name>>

授予用户的角色有哪些系统权限?

SELECT *
  FROM dba_sys_privs
 WHERE grantee IN (SELECT granted_role
                     FROM dba_role_privs
                    WHERE grantee = <<the user name>>)

关于database - 限制用户只能访问 Oracle SQL Developer 中自己的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476847/

相关文章:

python - 如果行包含 DD/MM/YY 打印行中的日期

sql - DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是什么?它们可以回滚吗?

database - TClientdataset 的无效参数错误

oracle - 将触发器从 Oracle 11g 迁移到 Postgresql 8.4

regex - 如何删除以特定单词开头的句子?

android - 如何使用 root 权限编译 Android 内核?

php - mysql数据库和php的用户权限

sql - MSSQL - 选择在两列中找到的不同产品

oracle11g - Oracle 中序列的同义词

mysql - 保护存储过程