oracle新建用户

说明:以下命令在PLSQL中运行

一、以管理员身份登录PLSQL

scott/root as sysdba

二、创建新用户

create user extjsTest1 identified by root;

说明:

extjsTest1:新用户名的用户名
root:新用户的密码

三、创建表空间

create tablespace extjsTest1Tablespace datafile 'D:oracle_tablespaceextjsTest1Data.dbf' size 32M; 

说明:

extjsTest1Tablespace:表空间的名字
D:oracle_tablespaceextjsTest1Data.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 ;这条语句没有任何问题,可以赋给指定用户一般需要的权限。


原文地址:https://www.cnblogs.com/wql025/p/4966875.html