Oracle 管理用户

来源:互联网 发布:妈妈讲故事软件下载 编辑:程序博客网 时间:2024/06/05 08:29
用户账户的属性:
1. 用户名
2. 身份验证方法
3. 默认表空间
4. 表空间的配额
5. 临时表空间
6. 用户配置文件
7. 账户状态

注意:只有用户名和身份验证方法是创建用户的时候所必须的,


用户名规范:开头必须为字母,可用$或者数字和字母和下划线,用户名不能是保留字,区分大小写,但是所有的字母将自动转换为大写字母,字符数不能超过30个

建议:最好始终使用大写字母和标准字符


注意不能更改用户名,只能删了重建,但是用户模式中的所有对象将会随着用户一起被删除


注意新建了数据库之后最好是修改默认表空间,避免新建的用户直接以system作为其表空间,否则可能会妨碍数据字典乃至整个数据库的操作


账户状态:
select USERNAME,ACCOUNT_STATUS from DBA_USERS;  

OPEN:账户可供使用
LOCKED:表示DBA故意锁定账户,任何用户都不能连接到锁定的账户
EXPIRED:表示口令生命周期已经终结,需要重置口令才能继续连接
EXPIRED&LOCKED:不仅锁定,还过期

还有其他的,但是总体就是这些的组合

更改用户的状态:
alter USER username ACCOUNT  LOCK;
alter USER username ACCOUNT UNLOCK;
强制用户更改口令:
ALTER USER username PASSWORD EXPIRE;
这将立刻开启正常阶段,强制用户在下次登录的时候(或立刻)更改口令

口令验证的方法:
1. OS
2. 口令文件
3. 口令
4. 外部身份
5. 全局身份

注意全局身份验证是需要使用LDAP,
OS和口令文件验证只能仅供管理员使用,要是想用,只能为其授予sysdba或者sysoper角色

口令文件身份验证:
connect username/passwd[@alias] as sysdba
OS身份验证:
connect / as [SYSOPER|SYSDBA];

因为sysdba只能通过口令文件进行验证(数据库不打开)

能够使用alter user来调整账户上的每个属性
1. 更改口令
alter user scott identified by lion;
2. 更改默认表空间和临时表空间
alter user scott default tablespace store_data temporary tablespace temp;
3. 更改配额
alter user scott quota unlimited on store_data,quota 0 on users;
4. 更改配置文件
alter user scott profile prod_profile;
5. 强制更改口令
alter user scott password expire;
6. 锁定用户
alter user scott sccount lock;
7. 删除用户
drop user scott;
但是需要注意:此时用户不能正在连接着,并且该用户不能有对象
强制删除的语法:
drop user scott cascade;


权限分为两种:
1. 系统权限:能够对数据字典进行操纵:DDL
2. 对象权限:能够执行影响用户的操作


系统权限大概有200多种,大多数都是影响数据字典的操作(创建表或者用户),其他的影响数据库和实例,例如创建表空间,调整实例参数值等,或者是创建会话

常见的权限:
1. create session 创建会话 只有有这个权限才能连接
2. restricted session 受限制的会话(假如使用startup restrict或者alter system enable restricted session进行调整的话,那么只有这个权限的用户才能够连接)
3. alter database 更改数据库,允许访问多个修改物理结构所需的命令
4. alter system 更改系统,允许控制实例参数和内存结构
5. create tablespace
6. create table 注意,
7. grant any object privilege 授予任何对象权限:允许被授权人将其本身不拥有的对象的对象权授予他人,但是不能授予自己
8. create any table :能够创建属于其他用户的表
9. drop any table :能删除其他用户的表
9. insert any table,update any table,delete any table  :能够DML其他用户的表
10. select any table :被授权人能够对数据库中的任何表执行select操作

授权语法:
GRANT privilege [, privilege ...] TO username;
变体:
GRANT privilege [, privilege ...] TO username with admin option; //注意admin是系统权限

对象权限:
对象权限允许执行DML和select,也能够执行PL/SQL对象,注意此处的DML是对于不是用户所拥有的对象来说的,假如有系统的DDL权限创建的表,那么是自己的表,可以直接访问


还是需要注意:
any select,any DML是对系统中的每个用户账户的每个用户授权,所以是系统权限

GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];
注意:此处的schema,一般是指的是用户名


一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

当然,也可以变形为:
GRANT ALL ON [schema.]object TO username [WITH GRANT OPTION];
注意:此处的ALL表示的是对象授权,并不是MySQL中的ALL,这点要区分!!!

------------------------------------------------------
创建和管理角色ROLE
产生的原因:
1. 假如数据库的用户量太大,那么需要重复授权的操作太多
2. 能够批量操作用户的权限
例子:
CREATE ROLE shishi;
GRANT CREATE SESSION,CREATE TABLE TO shishi;
GRANT select ON scott.emp TO shishi;
GRANT shishi TO xiaoming;

但是需要注意:使用角色进行授权之后,需要重新进行连接才能够生效
使用直接性的授权语句之后,可以立刻生效

oracle中预先定义的角色:
connect:就是create session
resource:能够创建数据对象和过程对象,还包括unlimited tablespace权限
DBA:几乎能够管理数据库的所有方面,但是startup和shutdown除外
SELECT_CATALOG_ROLE:有针对数据字典对象的2000多个权限,但是没有系统权限或者针对数据用户的权限,适合新DBA
SCHEDULER_ADMIN:拥有用于管理调度服务的调度程序作业所需的系统权限
PUBLIC:假如将一个权限授予PUBLIC,那么所有的用户都将得到该权限,这样很危险

 只要是为用户授予了角色,那么就将启用角色


对口令的一些限制:
FAILED_LOGIN_ATTEMPTS:允许输入几次口令错误,当正确后归零
PASSWORD_LOCK_TIME:就是当达到FAILED_LOGIN_ATTEMPTS错误的次数之后,锁定多少天
PASSWORD_LIFE_TIME:口令过期前的天数,口令在过期之后仍然能用,具体取决于PASSWORD_GRACE_TIME
PASSWORD_GRACE_TIME口令过期后第一次成功登陆后的天数,在此期间,口令仍可用
PASSWORD_REUSE_TIME:可以重新使用口令前的天数
PASSWORD_REUSE_MAX:允许重新使用口令的次数


资源限制:
SESSION_PER_USER:对同一个账户并发执行的用户登陆数
CPU_PER_SESSION:在强制终止会话前,允许会话的服务器进程使用的cpu时间

对于public权限,



最小权限原则:
用户应当只有执行任务所需的最小权限,禁止所有未被特别允许的权限,

应当取消public的utl权限:
revoke execute on utl_file from public;

审核sysdba的活动
数据库审核:能够跟踪特定权限的使用以及特定命令的执行,对特定表的访问以及登录尝试等等
基于值的审核:使用了数据库触发器,当在插入,更新或者删除记录的时候,就会运行包括一个巨鹿时间全部细节的PL/SQL代码块
细粒度审核:允许根据所访问的记录(或者该记录的列)来跟踪对表的访问

0 0