我想知道数据库管理员是否可以做类似的事情
我知道第一点是可能的,但是可以将第2点和第3点中指定的权限授予只对现有数据库表具有只读访问权限的人。
答案 0 :(得分:1)
未在数据库或模式上授予权限,仅授予对象权限。您当然可以创建数据库用户,并授予该用户SELECT
访问您希望他访问的数据库的每个模式中的每个表的权限。如果创建了新对象,则需要向这些用户授予对这些新对象的权限。然后,您可以为该用户提供CREATE TABLE
权限以及表空间上的适当配额,以允许用户创建新表。这主要是照顾#1和#2。
对于#3,Oracle没有表,其定义是特定会话的本地,因此您不能在会话结束时删除表。我想您可以创建一个注销触发器,通过dbms_job
提交作业,以便在用户注销后立即删除用户架构中的所有表。然而,这将是非常不寻常的,所以我强烈建议你避免这种情况,除非你做了一些非常不寻常的事情(例如,sqlfiddle,做了很多奇怪的事情,因为使用Oracle是一种非常奇怪的方式数据库)。