Oracle 用户管理与权限分配
用户管理是系统管理员最基本的任务之一,用户想要连接数据库并且使用相应的系统资源就必须是系统的合法用户且具有对应的权限。
1 创建用户
create user latiny identified by 123456
default tablespace default_tablespace
temporary tablespace temp;
创建用户时限制用户对空间的使用量
create user test2 identified by 123456
default tablespace default_tablespace
temporary tablespace temp02
quota 20m on default_tablespace;
2 修改用户
2.1 修改密码
alter user test2 identified by 12345678;
2.2 修改用户磁盘使用量
alter user test2 quota 50m on default_tablespace;
2.3 解锁用户
alter user test2 account unlock/lock;
3 删除用户
drop user test2 cascade; cascase 级联删除,如果用户包含数据库对象,则必须加此关键字才能删除该用户
4 权限管理
用户成功创建之后没有任何权限,不能登录数据库,更不能对数据进行任何操作,只有当被赋予一定的权限之后才能使用。
4.1 授权操作
grant connect, resource to test2; -- 系统权限
grant select, update, delete on scott.emp to test2; --对象权限
4.2 回收权限
revoke connect, resource from test2; -- 系统权限
revoke select, update, delete on scott.emp from test2; --对象权限
4.3 查询用户与权限
DBA_USERS 数据库用户基本信息
DBA_SYS_PRIVS 已授予用户或角色的系统权限
DBA_TAB_PRIVS 数据库对象上的所有的权限
USER_SYS_PRIVS 用户可以查看的自己的系统权限
ROLE_SYS_PRIVS 用户可以查看的自己的角色
ALL_TABLES 用户可以查询的基表信息
USER_TAB_PRIVS 用户将自己的对象权限授予情况
ALL_TAB_PRIVS 哪些用户给自己授权
5 角色管理
角色是一个独立的数据库实体,它包含一组权限,是一个权限或者多个权限的集合,它不属于某个单独用户,可以被授权给任何用户,也可以被收回。当某一些权限需要被经常授权给多个用户时,就可以把这些权限创建成一个角色授权给用户,这样就不必一一授权。角色的存在非常方便数据管理员对系统权限与对象权限的管理。
5.1 预定义权限
系统预定义角色指在数据库安装完成后系统自动创建的一些常用角色,这些角色的已由系统授予对应的权限,可以由数据库管理员直接使用。常见的预定义权限如下:
connect
resource
dba
exp_full_database
imp_full_database
角色connect, resource, dba 主要用于数据库管理,这些角色之间互相没有包含关系,互相独立。数据库管理员需要被赋予这3个角色,一般的开发人员需要被赋予connect, resource角色。
角色exp_full_database, imp_full_database 是用于操作数据库的导入与导出的权限集合,在使用expdp, impdp 或者系统的exp, imp这些工具时,需要具备这两个角色才有权限进行操作。
查看系统预定义角色:
select *
from dba_roles;
5.2 创建角色与授权
创建角色role_test1
create role role_test1 identified by 123456;
给角色授对象权限,将emp与dept的select, update, insert 权限赋予角色role_test1
grant select, update, insert on scott.emp to role_test1;
grant select, update, insert on scott.dept to role_test1;
给角色授予系统权限或者预定义角色(connect, resource 角色包含多个系统权限)
grant connect, resource to role_test1;
将角色role_test1 授予用户test1
grant role_test1 to test1;
查看自己的对象权限与系统权限
select *
from user_tab_privs;
select *
from role_sys_privs;
查看角色具有的预定义角色
select *
from dba_role_privs
where grantee='ROLE_TEST1';
查看用户具有的对象权限
select *
from dba_tab_privs
where grantee='TEST1';
5.3 删除角色
drop role role_test1;
6 登录切换至服务器oracle用户
6.1 普通两步登录:sqlplus /nolog conn user/password
6.2 一步登录:sqlplus user/password
6.3 管理员身份登录 sqlplus / as sysdba