说明:以下命令在PLSQL中运行
一、以管理员身份登录PLSQL
scott/root as sysdba
二、创建新用户
create user extjsTest1 identified by root;
说明:
extjsTest1:新用户名的用户名
root:新用户的密码
三、创建表空间
create tablespace extjsTest1Tablespace datafile 'D:\oracle_tablespace\extjsTest1Data.dbf' size 32M;
说明:
extjsTest1Tablespace:表空间的名字
D:\oracle_tablespace\extjsTest1Data.dbf:表空间的存储位置
32M:表空间的大小,m单位为兆(M)
四、将表空间分配给用户
alter user extjsTest1 default tablespace extjsTest1Tablespace;
说明:将名字为extjsTest1Tablespace的表空间分配给extjsTest1
五、给用户授权
grant create session,create table,unlimited tablespace to extjsTest1;
说明:一般给用户授予resource角色就行: SQL: grant connect,resource to extjsTest1;
一般的权限都在里头,想查看resource具体有什么权限:
SQL:select PRIVILEGE from role_sys_privs where role='RESOURCE';
六、查询所有用户
select * from all_users;
六、查询指定用户的权限
select * from dba_sys_privs where grantee='EXTJSTEST1';
七、以用户"EXTJSTEST1"登录PLSQL,可以用以下SQL查询当前用户的权限:
select * from user_sys_privs;
续:
1.若要在Oracle SQL Developer/PLSQL中可视化工具中查看、编辑extjsTest1 这个用户的表空间对应的表,需要创建该用户对应的连接,具体方法参见:“在TNSNAMES.ORA文件中配置本机装的oracle ”及“在Oracle SQL Developer中创建新连接”这两篇博客,这里不再赘述。
2.上面SQL由于分配的权限限制,导致我给表创建序列失败,如下图:
因此,现在我得给该用户添加一些权限了(以管理员身份登录PLSQL进行操作),SQL:
1.先删除extjsTest1 用户原权限:
revoke create session,create table,unlimited tablespace from EXTJSTEST1;
2.再添加权限:
grant connect,resource to EXTJSTEST1 ;
发现不管用,执行以上SQL后,用SQL“select * from dba_sys_privs where grantee='EXTJSTEST1';”查询extjsTest1 用户的权限是:
弄了一段时间,忽然想到先看下scott用户有什么权限,也用以上SQL查询,发现权限和上面的完全一样——不对,scott用户能创建序列,那么--又百度一下,发现一条SQL也能查询权限:(注:用普通身份登录scott就好了,不用以管理员身份登录,这个是查询当前用户的所有权限)
select * from session_privs;
结果:
现在大概能明白了,select * from dba_sys_privs where grantee='EXTJSTEST1'就是个“坑”,它是查询用户的系统权限,而session_privs是当前用户的所有权限,关于它们之间的区别在这里就不再深究了,详情参见:http://blog.sina.com.cn/s/blog_625651900100ifrk.html
小结:grant connect,resource to EXTJSTEST1 ;这条语句没有任何问题,可以赋给指定用户一般需要的权限。