我正在使用 TOAD 在 Oracle 12 c 数据库上创建 USER 。
创建 TABLESPACE 后,我将创建 USER 。我对可以赋予用户的许多 ROLES 和 PRIVILEGES 感到困惑。
为了执行 CRUD 操作并能够“编辑”数据库(创建或删除表,删除模式ecc),必须授予用户的最低/标准角色和特权是什么?来自TOAD?
谢谢
答案 0 :(得分:1)
指向the documentation - Privileges
的链接授予用户以下特权:
使用以下命令向用户授予特权(您需要以SYS或SYSTEM身份或具有GRANT特权的其他用户身份登录):
GRANT CREATE SESSION, SELECT, UPDATE, DETETE, INSERT TO user_name
答案 1 :(得分:1)
这取决于您要执行的操作。如果您只想使用自己的数据库架构中的表,那么通常具有以下特权即可启动:
userName= raw_input("Enter user's name: ")
with open('listOfUsers.json') as f:
data = json.load(f)
for k, v in data.items():
print str(dict[k][v])
您具有插入/更新/删除/选择自己拥有的表的默认权限。
表空间配额:
grant create session to <your_user>;
grant create table to <your_user>;
最好为用户设置默认表空间。在这种情况下,您可以在create table语句中省略表空间名称。
alter user <your_user> quota unlimited on <your_tablespace_name>;
答案 2 :(得分:1)
这是您可能(或可能不想)遵循的建议。
作为特权用户(例如SYS),检查数据库中可用的表空间。我正在使用11g XE(Express Edition),它显示以下内容:
SQL> show user
USER is "SYS"
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP --> temporary
USERS --> my data
现在,创建一个用户:
SQL> create user mdp identified by pdm
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users;
User created.
很久以前,有两个流行的预定义角色,分别为CONNECT和RESOURCE,它们被授予了一些最频繁的特权,因此人们很喜欢,将这些角色授予新创建的用户。
>如今,您不应该这样做:仅授予用户可能需要的最小特权集。第一个是CREATE SESSION
;没有它,您的用户甚至无法建立连接。
SQL> grant create session to mdp;
Grant succeeded.
然后,您将要创建一些表,因此-授予它:
SQL> grant create table to mdp;
Grant succeeded.
好,让我们以新创建的用户身份连接并做点事情:
SQL> connect mdp/pdm@xe
Connected.
SQL> create table test (id number);
Table created.
SQL> insert into test id values (1);
1 row created.
SQL> drop table test;
Table dropped.
SQL>
好;我可以创建表,从中插入/更新/删除/选择。首先,这已经足够了。但是,当事实证明您想要创建一个视图时,它只有在您授予该特权后才起作用:
SQL> create view v_dual as select * From dual;
create view v_dual as select * From dual
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> connect sys@xe as sysdba
Enter password:
Connected.
SQL> grant create view to mdp;
Grant succeeded.
SQL> connect mdp/pdm@xe
Connected.
SQL> create view v_dual as select * From dual;
View created.
SQL>
以此类推;不要仅仅因为您可能需要它而授予任何东西-如果您需要它何时何地授予它。尤其要注意系统特权,如果您不知道自己在做什么,可能会很危险。