oracle刚创建的用户获取权限 收藏
当一个用户刚被创建时是不具备任何权限的,因此要在该用户模式下创建表,需授予CREATE SESSION、CREATE TABLE、以及UNLIMITED TABLESPACE(或分配配额)权限,因为: 当用户要连接到数据库时必须拥有CREATE SESSION权限 当用户要创建表时必须拥有CREATE TABLE权限,同时用户还需要在表空间中拥有配额或者被授予UNLIMITED TABLESPACE。
现在我们来做一个测试: 斜体代表在sys用户下的操作,加粗代表在用户test下的操作:
1)、创建用户TEST,密码为passwd_1:
SQL> CREATE USER test IDENTIFIED BY passwd_1 ; 用户已创建
2)当用TEST连接数据库时: SQL> conn test/passwd_1
ERROR: ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied 警告: 您不再连接到 ORACLE。
//因为缺少CREATE SESSION的权限,登陆失败。
3)利用SYS给TEST授予CREATE SESSION权限: SQL> grant create session to test; 授权成功。
4)SQL> conn test/passwd_1 已连接。
5)在test的方案中创建表exam1:
SQL> create table exam1(student_id int, paper_id int);
create table exam1 * ERROR 位于第 1 行: ORA-01031: 权限不足
//因为未给TEST用户授予create table 权限,因此不能够创建表exam1.
6) 给TEST用户授予CRETE TABLE 权限 SQL> grant create table to test; 授权成功。
7)SQL> create table exam1 (student_id int, paper_id int);
create table exam1 * ERROR 位于第 1 行: ORA-01950: 表空间'SYSTEM'中无权限
//因为在创建用户时没有指定表空间,因此默认的表空间是SYSTEM表空间,而TEST用户还需要在表空间SYSTEM中既没有拥有配额又没有被授予UNLIMITED TABLESPACE权限,因此对于这种情况有两种解决办法:
第一种方法: SQL> alter user test quota 15m on system; 用户已更改。
//在SYSTEM表空间中,给用户TEST分配15M的使用空间
SQL> create table exam1 (student_id int, paper_id int); 表已创建
第二种方法: SQL> grant unlimited tablespace to test; 授权成功。
SQL> create table exam2 (student_id int, paper_id int); 表已创建
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ccaaiime/archive/2008/05/18/2456031.aspx