(ORACLE)PL/SQL 用户的相关操作
用户的相关操作
创建了表空间之后用户是不能访问表空间的,因此需要建立用户后设定用户的访问权限
ORACLE通过对用户身份和权限增强安全性
Oracle的安全机制
为了确保数据库的安全性,用户必须提供用户名和密码,然后才能连接到数据库。另外为了防止合法用户的非法访问,Oracle提供了权限、角色机制,以防止用户非法对数据库进行非法操作,所有这些构成了Oracle数据库的安全机制
Sql*PLUS
Sql*PLUS是Oracle自带的工具软件,主要用于执行SQL语句,PL/SQL块
在开始 程序的oracleoradb_home11g的application development内
或者在运行栏中输入sqlplus即可
SQL*PLUS常用命令
1.conn[ect];
用法:
conn 用户名/密码@网络服务名(数据库实例名) as sysdba/sysoper
当特权用户身份连接时,必须带上as sysdba 或者 as sysoper
2.disc[onnect]
用来断开当前连接
3.passw[ord]
该命令用于修改用户的密码,如果需要修改其他用户的密码,需要用sys/system用户登录
4.exit
该命令用于断开与数据库的连接 同时退出sql*plus
交互式命令
1.&
可以用来替代变量,而该变量在执行时,需要用户输入。
sql>select * from emp where job = ‘&job’;
2.edit
该命令可以用来编辑指定的SQL脚本
sql>edit d:\a.sql
3.spool
该命令可以将sql*plus屏幕上的内容输出到指定的文件中去
sql>spool d:\b.sql
创建用户
create user 用户名 identified by 密码 default tablespace 表空间名;
密码首字必须是字母
创建临时表空间
create temporary 表空间名 tempfile 存放路径 size 5m autoextend on;
用户和临时表空间同时创建
create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace mytemp;
注意!临时表空间名 必须先创建才可以使用
修改用户
alter user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace 表空间名 quota 文件大小 on 表空间名;
删除用户
drop user 用户名 cascade;
删除该用户的时候同时删除该用户下的所有表
创建用户后需要分配权限才能使用
Oracle中对权限分为两类
1、系统权限
系统权限提供了用户在整个 DBMS中执行操作的能力,会影响到整个数据库的安全
2、对象权限
对象权限是指赋予用户在特定的数据库对象执行特定操作的能力,
这些对象可包括:数据表,视图,字段,序列等
常见的系统权限
create session 连接数据库
create squence 创建序列
create synonym 创建同名对象
create table 创建表
insert any table 往所有表里插入记录
select any table 查询所有表
drop table 删除表
create user 创建用户
常用的对象权限
alter 修改
insert 新增数据
update 修改数据
delete 删除数据
select 查询数据
execute 执行存储过程
授予当前用户下的对象权限给某个用户
grant 权限名 on 对象名(表名) to 用户名;
grant select on emp to xiaoming;
使用 all 授予当前用户下的对象所有权限给某个用户
grant all on emp to xiaoming;
撤销对象权限
revoke权限名 on 对象名(表名) to 用户名;
收回用户xiaoming对emp表的查询权限
revoke select on emp from xiaoming;
对权限的维护
希望xiaoming用户可以去查询scott用户的emp表的权限,还希望xiaoming把这个权限继续赋予给其他用户。
如果是系统权限 就在授权时,在授权语句后面加上 with admin option
grant connect to xiaoming with admin option;
如果是对象权限 就在授权时,在授权语句后面加上 with grant option
grant select on emp to xiaoming with grant option
或者某个用户的对象 如scott的emp表的查询权限给xiaoming
grant select on scott.emp to xiaoming with grant option
如拥有scott用户把对象的查询权限赋予给xiaoming,xiaoming再把权限赋予了xiaohong,当scott用户收回xiaoming的权限时,xiaoming赋予xiaohong的权限也同时收回
角色
在Oracle中,为了方便的给用户赋予权限,引入了角色的概念
角色就是 系统权限 和 对象权限 的集合,可以分配给一个用户
角色分为两类
1、系统角色
2、用户角色
系统角色
系统角色就是系统本身自带的预设好的权限的集合
常用的系统角色有
1、connection 只有最基本的权限范围
2、resource 开发人员权限,可以建表,建序列等
3、dba 拥有所有系统权限
查看connect 权限
select grantee privilege from dba_dba_sys_privs where garntee = ‘CONNECT’ order by privilege;
用户角色
用户角色需要先创建,再赋予角色权限然后才能将角色赋予用户
创建角色
create role 角色名;
create role myrole;
赋予权限
grant 系统权限 to 角色名;
grant create session to myrole;
grant 对象权限 on 对象 to 角色名;
grant select on HR.JOBS to myrole;
使用角色
grant 角色名 to 用户名;
grant myrole to xiaoming;
撤销角色
revoke 角色名 from 用户名
revoke myrole from xiaoming;
(Oracle用户管理)profile
使用profile管理用户口令
profile是口令限制。资源限制的命令集合,当建立数据库的时候,Oracle会自动建立名称为default 的 profile
当用户建立,没有指定profile,那么Oracle会将defaule分配给用户。
1、账户锁定
概述:指该账户(用户)登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用DBA身份去执行该命令。
创建profile文件
sql>create profile 文件名称 limit failed_login_attempts 错误次数 password_lock_time 锁定天数;
sql>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
给用户设置 profile文件
sql>alter user 用户 profile lock_account;
给账户解锁
sql>alter user 用户 account unlock;
给用户创建一个profile文件,要求用户每隔10天要修改自己的密码,宽限期是2天
sql>create profile 文件名 limit password_life_time 需要设置修改的天数 password_grace_time 宽限期天数;
sql>create profile myprofile limit password_life_time 10 password_grace_time 2;
口令历史
如果希望用户在修改密码时,不能使用以前使用过的密码,可以使用口令历史,这样Oracle 就会将修改信息存放着在数据字典中,这样Oracle就会对新旧密码进行比较,当发现新密码一样时,就提示用户重新输密码。
sql>create profile 文件名 limit password_life_time 需要设置修改的天数 password_grace_time 宽限期天数 password_reuse_time 指定口令多少天之后可以重用;
sql>creat profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10;
删除profile文件
sql>drop profile 文件名 cascade
后面加了cascade 把和文件的相关设置删除
sql>drop profile password_history cascade;