Oracle中用户、权限、角色的创建
1、 创建用户、修改密码、删除用户
在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dba(数据库管理员sysdba)的权限才能使用。
问题:创建好的用户无法正常登录?
oracle 中用户建立后是无法正常登录的,只有在数据库管理员(DBA)对用户分配相应的权限后,用户才可以登录。
1)创建用户
语法结构:create user 用户名 identified by 密码 【default tablespace 表空间名】【temporary tablespace temp】
建议创建用户的时候指定表空间。
2)表空间
创建表空间
create tablespace temp datafile 'E:\oracle_tablespace\englishapp\temp.dbf' size 150M autoextend on next 5M maxsize 3000M;--自动增长
/*重新给用户PRDFPSRV指定默认表空间,必须是dba(数据库管理员sysdba)用户登录操作*/
alter user 用户 default tablespace 表空间;
//登录用户后,查看表当前所属表空间
select table_name,tablespace_name from user_tables;
//登录用户后,批量修改当前登录用户下的表存放的表空间,将以下查询出的语句复制出来再执行
SELECT 'alter table '||TABLE_NAME||' move tablespace 正确的空间名;' FROM USER_TABLES WHERE TABLESPACE_NAME = '错误的表空间名'
//对用户写的表插入数据显示ORA-01950对表空间XXX无权限;解决方案2种,如下:
解决方案1,登录dba(数据库管理员sysdba)用户,执行:
alter user 用户名 quota unlimited on 表空间;
解决方案2,登录表空间对应的本身用户,执行:
grant unlimited tablespace to 用户名;
//删除表空间与表空间文件(注意:如果在创建表空间的时候带有双引号,则删除的时候也要带上)
DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;
前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除
drop tablespace temp including contents and datafiles cascade onstraints;
//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数
//including datafiles 删除表空间中的数据文件
//cascade constraints 同时删除tablespace中表的外键参照
3) 给用户修改密码
概述:一般以 dba 的身份(管理员用户sysdba),如果用其它用户去删除用户则需要具有 alter user权限。
语法结构:alter user 用户名 identified by 密码
4)删除用户
概述:一般以 dba 的身份去删除某个用户,如果用其它用户去删除用户则需要具有 drop user 的权限。
注意:在删除用户时, 如果要删除的用户,已经创建了表, 那么就需要在删除的时候带一个参数 cascade; Cascade 有级联的作用
语法结构:drop user 用户名 [cascade]
2、 给用户分配权限、角色
概述:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用使令 grant,回收权限使用命令 revoke。
可参考这篇:Oracle权限管理详解
赋权限语法结构:grant 权限/角色 to 用户名;
回收权限语法结构:revoke 权限/角色 from 用户名;
1)权限指执行特定类型SQL命令或访问其他对象的权利(系统权限、对象权限)
系统权限:允许用户执行某些数据库管理相关的权限
create session(登录权限)
create table(创建表权限)
create index(创建索引权限)
create view(创建视图权限)
create sequence(创建序列权限)
create trriger(创建触发器权限)
对象权限:允许用户对某一特定对象执行特定的操作,比如对表的增删改查(insert 增、delete 删、update 改、select 查);
--使用其他用户的sequence
1、 赋予权限:GRANT SELECT ON SEQ_NAME TO 数据库其他用户; 2、 撤销权限:REVOKE SELECT ON SEQ_NAME FROM XXX;
--使用其他用户的表
grant select, insert, update, delete, references, alter, index, debug, read on 表名 to 数据库其他用户;
2)角色是具有名称的一组权限的组合,分为:预定义角色和自定义角色。
自定义角色:按需要定制一定权限形成角色,可以作为预定义角色的补充。来满足用户的需求。
预定义角色:把常用的权限集中起来,形成角色。常见的角色有:dba、connect、resource等;一般情况下普通用户有connect和resource的角色就够了。
CONNECT角色:临时用户,是授予用户的最基本的权利,能够连接到 oralce 数据库中,在对其他用户的表有访问权限时,做 SELECT、UPDATE、INSERTT 等操作。
Create session --建立会话;
Alter session --修改会话;
Create view --建立视图。
Create sequence --建立序列等权限
RESOURCE角色:更为可靠和正式的用户;具有创建表、序列、视图等权限。
Create table --建表;
Create trigger --建立促发器;
Create procedure --建立过程;
Create sequence --立序列;
Create type --建立类型等权限;
DBA角色:数据库管理员角色,拥有管理数据库的最高权限