1、sys用户与system的区别
1.1、存储数据的重要性不同
sys用户 所有 oracle 的数据字典的基表和视图都存放在 sys 用户中,这些基表和视图对于 oracle 的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。 sys 用户拥有 dba , sysdba , sysoper 等角色或权限,是 oracle 权限最高的用户。
system用户用于存放次一级的内部数据,如oracle 的一些特性或工具的管理信息。 system 用户拥有普通 dba 角色权限。
1.2、权限的不同
system用户只能用 normal 身份登陆 em ,除非你对它授予了sysdba 的系统权限或者 sysoper 系统权限。sys 用户具有 “SYSDBA” 或者 “SYSOPER” 系统权限,登陆 em 也只能用这两个身份,不能用normal 。
以 sys 用户登陆 Oracle ,执行 select * from V_$PWFILE_USERS; 可查询到具有 sysdba 权限的用户,如:
由上图可以看出system已经授权sysdba权限。
system如果正常登录,它其实就是一个普通的 dba 用户,但是如果以 as sysdba 登录,其结果实际上它是作为 sys 用户登录的。因此在 as sysdba 连接数据库后,创建的对象实际上都是生成在 sys 中的。其他用户也是一样,如果 as sysdba 登录,也是作为 sys 用户登录的
2、normal 、 sysdba 、 sysoper 的区别
normal 是普通用户
sysdba 拥有最高的系统权限,登陆后是 sys
sysoper 主要用来启动、关闭数据库, sysoper登陆后用户是 public
3、Oracle的基本使用
conn 连接oracle 用法 conn 用户名/密码[as sysdba /sysoper]
disc 断开与当前数据库的连接 用法 disc
passw 修改用户密码(自己可以修改自己的 dba可以修改他人的) 用法 passw username
show user 显示当前用户名 用法 show user
exit 断开并退出数据库 用法 exit
start 运行sql脚本 用法 start 脚本路径
edit 编辑指定的sql脚本 用法 edit 脚本路径
spool 将sqlplus屏幕中的文本输入到指定文件中 spool 指定文件路径 spool off结束读屏
linesize 设置显示行的宽度(默认为80个字符) 用法 linesize 120
pagesize 设置每页显示的行数目(默认为14) 用法 pagesize 10
4、Oracle的用户管理
1、创建用户
条件 需要具有创建用户的权限,如sys,system,sysdba,dba role等
语法 create user user_name identified by password
注意 此时创建的用户并不能进行登录,需要对用户赋予相应权限之后才能进行登录
2、修改用户属性
条件 需要具有修改用户属性的权限
语法 alter user user_name 属性 + 状态
3、删除用户
条件 具有删除用户的权限
语法 drop user user_name [cascade] 加上cascade则将用户连同其创建的东西全部删除
注意 如果该用户创建了对象,要加cascade删除,否则删除不掉,另外,不能删除当前正在与Oracle实例相连的用户。
5、Oracle权限
5.1、分类
Oracle权限可分为系统权限和对象权限
系统权限 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
对象权限 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等
5.1.1 系统权限
超过一百多种有效的权限(select * from system_privilege_map查)数据库管理员具有高级权限。
1、常用的系统权限
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 创建视图
2、授予用户系统权限
系统权限只能由dba用户授出:sys, system(最开始只能是这两个用户)
语法 grant privilege [, privilege...] to user [,user| role, public...][with admin option];
with admin option 使用户同样具有分配权限的权利,可将此权限授予别人
3、查看系统权限
dba_sys_privs --针对所有用户被授予的系统权限
user_sys_privs --针对当前登陆用户被授予的系统权限
4、回收系统权限
要么是dba要么是授权用户才可以收回权限
revoke {privilege | role} from {user_name | role_name | public}
对于使用with admin option 为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限
5.1.2 对象权限
1、不同的对象具有不同的对象权限,对象的拥有者拥有对象的所有权限,对象的拥有者可以向外分配权限,ORACLE一共有8种对象权限
对象权限 | 表 | 视图 | 序列 | 过程 |
修改(alter) | √ | √ | ||
删除(delete) | √ | √ | ||
执行(execute) | √ | |||
索引(index) | √ | |||
插入(insert) | √ | √ | ||
关联(references) | √ | √ | ||
选择(select) | √ | √ | √ | |
更新(update) | √ | √ |
2、授予用户对象权限
条件 dba或对象的拥有者
语法 grant object_priv|all[(columns)]onobject to {user|role|public} [with grant option];
with grant option:允许用户再次给其它用户授权
3、查看对象权限
user_sys_privs 用户拥有的系统权限
user_tab_privs 用户拥有的对象权限
4、回收对象权限
要么是dba要么是授权用户才可以收回权限
revoke {privilege [, privilege...]|all} on object from {user[, user...]|role|public}
如果取消某个用户的对象权限,对于该用户使用with grant option授予其它用户相同权限来说,将级联删除这些用户权限
5、Oracle 资源配置 profile文件
1、profile 简介
Profile作为用户配置文件,它是口令限制、资源限制的命名集合。Profiles作为Oracle安全策略的重要组成部分,利用它可以对数据库用户进行基本的资源限制,并且可以对用户的密码进行管理。建立oracle数据库时,oracle会自动建立名为Default的profile文件,当建立用户没有指定profile,那么oracle就将defalut分配给用户,初始化的Default没有进行任何口令和资源限制。
创建profile文件
语法 create profile 文件名 参数;
将创建的profile文件分配给用户
语法 alter user 用户名 profile 文件名;
2、使用profile管理密码
1) 账户锁定
账户的锁定策略是指用户在连续输入指定次数错误密码后,Oracle会自动锁定用户的账户,并且可以规定账户的锁定时间。Oracle为锁定用户提供了一下两个参数。
1、 failed_login_attempts 限制用户在登录到Oracle数据库是允许失败的次数。
2、 password_lock_time 指定用户被锁定的天数
如果建立profile文件时没有提供password_lock_time 将自动使用默认值unlimited,这种情况下,需要dba手动解锁用户,可以使用alter user username account unlock对用户解锁
2) 密码过期时间
密码过期时间是指强制用户定期修改自己的密码,当密码过期后,Oracle会计时提醒用户修改密码。
密码宽限期是指密码到期之后的宽限使用时间。为了强制用户定期修改密码,Oracle提供了以下2个参数。
1、password_life_time 设置用户密码的有效时间,单位为天数。
2、password_grace_time 设置密码失效的宽限时间。
3) 密码历史
密码历史是用于控制账户密码的可重复使用次数或可重用时间。当用户修改密码时,Oracle会对新旧密码进行比较,以确保用户不会重用过去用过的密码。关于密码历史有如下2个参数。
1、password_reuse_time 密码可重用的时间,单位为天。
2、password_reuse_max 密码在能够被重新使用之前,必须改变的次数。
3、维护profile文件
1) 修改profile文件
语法 alter profile [资源文件名] limit[资源名] 设置的具体值;
例如 alter profile default limitfailed_login_attempts 100;
2) 删除profile文件
语法 drop profile [资源文件名][cascade] ;
若创建的profile已经授权给了某个用户,使用cascade级联收回相应的限制,收回限制信息后将以系统默认的profile对该用户进行限制。已分配的profile,删除时必须加cascade选项。
如果不删除profile,只是取消单个用户的profile
语法 alter user dinya profile default;