学习要求
有一定关系型数据的操作功底,会SQL语句
教学目标
熟练掌握Oracle数据库用户,角色与权限相关
用户
在oracle中,一个服务器上一般只有一个数据库。在一个数据库中,不同的用户项目由不同的用户访问,每一个用户拥有自身创建的数据
库对象,当一个用户想访问其它用户下的数据库对象时,必须由对方授予一定的权限,因此,用户和权限在oracle中非常重要。
oracle中的帐户分为两类:一类是必需的帐户,一类是存储各种应用的帐户
用户名 | 密码 | 描述 |
---|---|---|
ANONYMOUS | ANONYMOUS | 访问http的匿名用户帐户 |
CTXSYS | CTXSYS | interMedia Text用户 |
DBSNMP | DBSNMP | 目录集成平台用户 |
EXFSYS | EXFSYS | 表达式过滤器用户 |
MDDATA | MDDATA | oracle空间数据帐户 |
MDSYS | MDSYS | oracle空间数据媒体管理员 |
MGMT_VIEW | MGMT_VIEW | |
OLAPSYS | MANGER | 用于创建olap元数据 |
ORDPLUGINS | ORDPLUGINS | oracle ineterMedia,video用户 |
ORDSYS | ORDSYS | image管理员 |
OUTLN | OUTLN | 拥有connect和resource角色 |
SCOTT | Tiger | 样例帐户 |
SI_INFORMATN_SCHEMA | 静止图像浏览帐户 | |
SYS | 用户指定 | 数据库管理帐户 |
SYSMAN | OEM_TEMP | 企业管理器帐户 |
SYSTEM | 用户指定 | 数据库管理帐户 |
WK_TEST | WK_TEST | 同wksys |
WKPROXY | 代理帐户 | |
WKSYS | WKSYS | 同wk_test |
WMSYS | WMSYS | 工作空间管理帐户 |
XDB | CHANGE_ON_INSTALL | xml db帐户 |
默认情况下,system/sys用户是解锁的,其他用户根据数据库版本不同,可能是锁定的,也可能是不锁定的。
select username,account_status,expiry_date from dba_users; -- system/sys 用户才能执行
alter user scott account unlock; -- 解锁
当然,如果没有用户,可以使用命令创建
create user 用户名 identified by 密码;
新建用户权限很低,不能连接数据库,也没有创建、操作数据库对象的权限,此时需要对其进行相应的授权。
grant connect to 用户名;--允许用户连接数据库
grant resource to 用户名;--允许用户创建相关的数据库对象,如表,序列等。
权限
权限允许用户访问属于其它用户的对象或执行程序
权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
常用的权限
系统权限 | 允许用户的操作 |
---|---|
create session | 连接到数据库 |
create sequence | 创建序列 |
create synonym | 创建同义词 |
create table | 在用户架构中创建表格 |
create any table | 在任意框架中创建表 |
drop table | 从用户框架中删除表 |
drop any table | 在任意框架中删除表 |
create procedure | 创建存储过程 |
execute any procedure | 在任意框架中执行存储过程 |
create user | 创建用户 |
drop user | 删除用户 |
create view | 创建视图 |
角色
一系列权限的集合
系统角色:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
常见角色
1.CONNECT, RESOURCE, DBA 这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。
3.EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。
4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE AQ:Advanced Query。这两个角色用于oracle高级查询功能。
5. SNMPAGENT 用于oracle enterprise manager和Intelligent Agent
6.RECOVERY_CATALOG_OWNER 用于创建拥有恢复库的用户。关于恢复库的信息,
练习
需求:创建一个用户
-- 使用system/sys登录
conn system/admin; -- admin 是安装时设置的超管密码
-- 创建用户
create user dafei identified by admin;
-- 登录
conn dafei/admin; --- ORA-01045: 用户 DAFEI 没有 CREATE SESSION 权限; 登录被拒绝
需求:给用户登录授权
-- 使用system/sys登录
conn system/admin; -- admin 是安装时设置的超管密码
-- 授权
grant create session to dafei;
-- 切换用户
conn dafei/conn;
-- 查看用户权限
select * from user_sys_privs;
需求:创建一个角色,授予创建表,查看表权限
-- 使用system/sys登录
conn system/admin; -- admin 是安装时设置的超管密码
-- 创建一个角色
create role myrole;
-- 授权创建表
grant create table to myrole;
-- 分配角色
grant myrole to dafei;
-- 建表-需要退出,重新登录
create table demo2(id number);
-- 查看用户权限
select * from user_role_privs;
需求:回收权限
-- 回收角色权限
revoke myrole from dafei;
-- 回收登陆权限
revoke create session from dafei;