一、oracle中的用户
系统用户:sys、system(系统创建的用户)
登录命令:sqlplus sys/密码 as sysdba
备注:sys是oracle数据库中最高权限用户,角色为sysdba(数据库管理员),system用户的权限仅次于sys,角色为sysoper(数据库操作员)
超级用户: /
登录命令:sqlplus / as sysdba
普通用户:用户自己创建的用户(系统自带的有scott)
备注:给锁定用户解锁并更改密码,如scott,锁定的用户一般密码都过期要修改密码
解锁:alter user scott account unlock;
改密码:alter user scott identified by tiger;
1.1、创建用户
create user 用户名 identified by 密码
例如:create user abc identified by 123;
创建时设置默认表空间:create user 用户名 identified by 密码 default tablespace 表空间名
例如:create user abc identified by 123 default tablespace system;
备注:新创建的用户默认表空间为users,状态为open状态
1,2、用户与模式(schema)
模式是指用户所拥有的所有的对象的集合,对象包括:表、索引、视图等,每个用户都会有独立的模块信息,schema必须依赖于用户而存在 ,意义在于标志某个对象的所有者,schema+对象的组合可以限制数据库中唯一对象,例如:select * from emp,实际被oracle 翻译为 select * from system.emp(system用户登录的),可以跨schema操作,在system下可以查询 select * from sys.dual
查看当前用户及schema信息sql语句如下:select sys_context('userenv','current_user') current_user,sys_context('userenv','current_schema') current_schema from dual;
备注:sys_context函数是Oracle提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定namespace下的parameter值
system 登录不能查看其他用户的对象,除非在对象前加该用户,如:desc abc.hh(显示abc用户下的hh表结构,desc hh 是不会显示abc中的hh表)
1.3、查看当前登录用户(show user)
例如:select * from user_users;
1.4、用另一个用户登录(conn 账号/密码)
例如:conn scott/tiger
1.5、更改用户默认表空间(alter user 用户名 default tablespace 表空间名)
例如:alter user scott default tablespace system;
1.6、删除用户(drop user 用户名)
例如:drop user scott;
若用户里面存在对象,要加cascade
例如:drop user abc cascade;
二、oracle中的权限
oracle中共有两种权限:系统权限和对象权限
2.1、系统权限
系统权限是指针对数据库中特定操作(如创建数据表)的许可
2.1.1 、获取系统权限相关信息
select * from dba_sys_privs;
select distinct privilege from dba_sys_privs;(系统所有的权限)
2.1.2、为用户分配系统权限
新创建的用户没有分配任何系统权限,不能登录系统或做其他操作,必须系统管理员先给其分配权限
如创建了用户abc,给其分配创建session的权限如下:
grant create session to abc;(授权后可以用abc账号登录数据库)
grant create table to abc(授权后可创建表)
2.1.3 、回收权限
revoke create session from abc;
2.2、对象权限
对象权限是指针对数据库中已存在的对象(如表、视图等) 的访问和操作,包括
select :用于查询表、视图、序列
insert:像表或视图中插入新的记录
update:更新表中的数据
delete:删除表中的数据
execute:函数、存储过程、程序包等的调用和执行
index:为表创建索引
references:为表创建外键
alter:修改表或序列的属性
2.2.1、为用户赋予select 权限(grant select on 表名 to 用户名)
system用户下存在表hh,要在abc 用户下查看hh表
system用户下授权:grant select on hh to abc;
abc用户下查看:select * from system.hh;
2.2.2、为用户赋予insert权限(grant insert on 表名 to 用户名)
system用户下存在表hh,要在abc 用户下向hh表插入数据
system用户下授权:grant insert on hh to abc;
abc用户下查看:insert into system.hh values('1','nana');
2.2.3、为用户赋予update权限(分所有列更新和部分列更新)
system用户下存在表hh,要在abc 用户下更新hh表中部分列中的数据
system用户下授权:grant update( name) on hh to abc;
abc用户下查看:update system.hh set name='john' where id=1;
system用户下存在表hh,要在abc 用户下更新hh表所有列中的数据
grant update on hh to abc;
2.2.4、 为用户赋予所有权限system用户下存在表hh,要在abc 用户下操作表hh(增删改查等所有对象权限)
grant all on hh to abc;
2.2.5、回收对象权限
收回abc在system用户下的hh表的查询权限
revoke select on from abc;
三、角色
一个角色可以赋予多个权限,再将角色赋给用户
3.1、角色的创建及使用
3.1.1、角色的创建(create role 角色名)
create role role_hh;
3.1.2、给角色赋权限
grant select on hh to role_hh;
3.1. 3、讲角色的权限赋给用户abc
grant role_hh to abc;
3.2、角色的继承
一个角色的权限可以赋给另外一个角色,如讲角色role_01的权限赋给角色role_02,roele_02将含有role_01的权限
grant role_01 to role_02;
3.3、角色的禁用和启用
3.3.1、角色的禁用
禁用用户abc的所有角色:alter user abc default role none;
3.3.2、角色的启用
为用户abc启用角色role_hh:set role role_hh;(在abc用户登录状态下)
数据字典:
用户:dba_users(管理员权限才能查看)user_users (普通用户权限查看)
权限:dba_sys_privs(系统权限数据字典) dba_tab_privs(数据表权限数据字典)
角色:session_roles(当前会话下该用户的默认角色数据字典)