系统权限:系统规定用户使用数据库(系统权限是针对用户而言的)
实体权限:某种权限的用户对于表或者视图的存取控制权限(针对表或者视图而言)
常见的权限列表(仅供参考)见附录一:
Oracle的角色管理
一:概念
角色:一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限
二:一些常用的系统预定义角色
1:CONNECT,RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。
oracle建议用户自己设计数据库管理和安全规划
而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色
DBA :拥有全部权限是系统最高权限,只有DBA才可以创建数据库结构
Resource :拥有Resource权限的用户只可以创建实体,不可以创建数据库结构
Connect :拥有Connect权限的用户只可以登录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
这两个角色用于oracle高级查询功能
备注:AQ:Advanced Query
5:SNMPAGENT
用于oracle enterprise manager和Intelligent Agent
6:RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。
三:角色管理
1:创建一个角色
createrole rolename; --创建一个名叫rolename的角色
2:给角色授权
grantcreate any table,create procedure to rolename; --给rolename这个角色赋予创建表和过程
3:给用户授予指定的角色
grantrolename to username; --给username这个用户授予rolename角色
4:查看角色所包含
select *from role_sys_privs;
5.创建带有口令以角色(在生效带有口令的角色时必须提供口令)
createrole role1 identified by password1;
6.修改角色:是否需要口令
alterrole role1 not identified;
alterrole role1 identified by password1;
7.修改指定用户,设置其默认角色
alteruser user1 default role role1;
alteruser user1 default role all except role1;
9.删除角色
drop role role1;
备注:角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应也就没有了。
Oracle的用户管理
一:Oracle用户的创建步骤
step1:创建用户的Profile文件
create profile student limit --student为资源文件名
failed_login_attempts 3 --指定锁定用户的登录失败次数
password_lock_time 5 --指定用户被锁定天数
password_life_time 30 --指定口令可用天数
备注:关于Profile
作用:ORACLE的PROFILE文件是限制数据库用户使用资源的一种手段。
如:控制session或sql能使用的CPU、控制用户的密码管理策略等。
用法:参见:《ORA02_Profile文件》
step2:创建用户
create user user1 --创建用户,指定用户名
Identified by pwd1 --指定用户密码
default tablespace spname1 --指定用户的defauttablespace
temporary tablespace spname2 --指定用户的temporarytablespace
profile student --指定用户使用哪个profile
quota 100M on spname1; --指定用户使用spname1表空间的最大空间
备注:tablespace
作用:ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中
用法:参见《ORA03_Oracle表空间》
step3:为新建的用户授权
grant connect,resource to user1; --授予user1普通用户
grant connect,resource,dba to user1; --授予user1DBA管理员
二:修改用户
Alter User user1 --指定要修改的用户
Identified pwd1 --修改用的密码
Default Tablespace spname1 --修改用户的DefaultTablespace
Temporary Tablespace spname2 --修改用户的temporary tablespace
Profile student --修改用户的profile
Quota 100M on spname1; --修改用户在spname表空间上的最大空间
单独修改
alter user user1 identified by pwd2; --将use1的密码修改为pwd2
alter user user1 default tablespace spname2; --将用户的缺省表空间修改为spname2
alter user user1 temporary tablespace spname2; --将用户的临时表空间修改为spname2
三:删除用户
drop user user1; --删除用户
drop user user1 cascade; --删除用户,以及级联的删除用户创建的全部实体
注意:当前用户不能使用这种方式删除
四:其他
查询用户会话信息:
select username, sid, serial#, machine from v$session;
删除用户会话信息:
Alter system kill session 'sid, serial#';
查询用户SQL语句:
select user_name, sql_text from v$open_cursor;
其他相关知识点
一:Oracle的用户认证方式
1>操作系统验证
登录的时候只验证当前登录当前操作系统的用户不在在Ora_dba用户组当中,如果在则登录成功,如果不在则使用数据库验证方式验证
2>数据库验证
根据用户输入的登录信息到对应的文件中查找用户名和密码以及身份是否正确,如果正确则登录成功,否则失败
设定用户认证方式:修改sqlnet.ora文件
决定是否使用操作系统方式验证:
SQLNET.AUTHENTICATION_SERVICE(NTS) --使用操作系统方式验证
SQLNET.AUTHENTICATION_SERVICE(NONE) --使用数据库方式验证
SQLNET.AUTHENTICATION_SERVICE(NTS,NONE) --两种方式都用
普通用户登录,默认已数据库验证方式登录
特权用户登录,默认使用操作系统验证,当登陆的时候带有 as sysdba,时dbms默认默认为特权用户登录,则忽略用户名和密码,自动用操作系统验证方式验证,登陆成功之后自动切换为sys用户
二:管理员用户口令丢失怎么办?
1:找到PWD数据库实例名.ora
2:将文件备份一份(可选,建议备份)
3:删除文件
4:在dos窗口下输入命令
orapwd file=密码文件路径\密码文件名
password=新密码
entries=允许最多的用户数目
5:重启数据库实例,让密码文件生效
三:Oracle权限的转移:
如果赋权限的时候允许用户能够将权限继续赋给其他的用户
对象权限:加with grant option
系统权限:加whth admin option
例如:
grant select on emp to user1 with grant option;
grant connect,resource,dba to user1 withadmin option;
附录一:常见的权限列表(仅供参考)
alter any cluster | 修改任意簇 | alter any index | 修改任意索引 |
alter any role | 修改任意角色 | alter any sequence | 修改任意序列 |
alter rollback segment | 修改回滚段 | alter sequence | 修改拥有的序列权限 |
alter session | 修改数据库会话 | alter sytem | 修改数据库服务器设置 |
alter table | 修改拥有的表权限 | alter tablespace | 修改表空间 |
alter user | 修改用户 | analyze | 使用analyze命令分析数据库中任意的表、索引和簇 |
audit any | 为任意的数据库对象设置审计选项 | audit system | 允许系统操作审计 |
backup any table | 备份任意表 | become user | 切换用户状态 |
commit any table | 提交表 | create any cluster | 为任意用户创建簇 |
create any index | 为任意用户创建索引 | create any procedure | 为任意用户创建存储过程 |
create any sequence | 为任意用户创建序列 | create any snapshot | 为任意用户创建快照 |
create any synonym | 为任意用户创建同义名 | create any table | 为任意用户创建表 |
create any trigger | 为任意用户创建触发器 | create any view | 为任意用户创建视图 |
create procedure | 为用户创建存储过程 | create profile | 创建资源限制简表 |
create public database link | 创建公共数据库链路 | create public synonym | 创建公共同义名 |
create role | 创建角色 | create rollback segment | 创建回滚段 |
create session | 创建会话 | create sequence | 为用户创建序列 |
create snapshot | 为用户创建快照 | create synonym | 为用户创建同义名 |
create table | 为用户创建表 | create tablespace | 创建表空间 |
create user | 创建用户 | create view | 为用户创建视图 |
delete any table | 删除任意表行 | delete any view | 删除任意视图行 |
alter any snapshot | 修改任意快照 | alter any table | 修改任意表 |
update table | 修改用户表中的行 | update view | 修改视图中行 |
update any table | 修改任意表中行 | update snapshot | 修改快照中行 |
select view | 使用视图 | unlimited tablespace | 对表空间大小不加限制 |
alter any trigger | 修改任意触发器 | alter cluster | 修改拥有簇 |
select sequence | 使用用户序列 | select table | 使用用户表 |
select any table | 使用任意表 | select snapshot | 使用快照 |
restricted session | 创建有限制的数据库会话 | select any sequence | 使用任意序列 |
manager tablespace | 管理表空间 | references table | 参考表 |
insert view | 向用户视图中插行 | lock any table | 给任意表加锁 |
insert snapshot | 向快照中插入行 | insert table | 向用户表中插入行 |
alter database | 修改数据库 | alter procedure | 修改拥有的存储过程权限 |
index table | 给表加索引 | insert any table | 向任意表中插入行 |
grant any privilege | 授予任意系统特权 | grant any role | 授予任意角色 |
force any transaction | 管理未提交的任意事务的输出权限 | force transaction | 管理未提交的用户事务的输出权限 |
execute package | 执行存储包 | execute procedure | 执行用户存储过程 |
execute any procedure | 执行任意存储过程 | execute function | 执行存储函数 |
drop tablespace | 删除表空间 | drop user | 删除用户 |
drop public synonym | 删除公共同义名 | droprollback segment | 删除回滚段 |
drop public cluster | 删除公共簇 | drop public database link | 删除公共数据链路 |
drop any trigger | 删除任意触发器 | drop any view | 删除任意视图 |
drop any table | 删除任意表 | drop profile | 删除资源限制简表 |
drop any snapshot | 删除任意快照 | drop any synonym | 删除任意同义名 |
alter profile | 修改资源限制简表 | alter resource cost | 设置佳话资源开销 |
drop any role | 删除任意角色 | drop any sequence | 删除任意序列 |
drop any index | 删除任意索引 | drop any procedure | 删除任意存储过程 |
delete view | 为用户删除视图行 | drop any cluster | 删除任意簇 |
delete snapshot | 删除快照中行 | delete table | 为用户删除 |