Oracle11g学习笔记(三)
一、Oracle用户管理
创建用户,需要DBA权限
命令:create user 【用户名】identified by 【密码】
修改密码
命令:password 【用户名】 ( 在用户已经连接的情况下 )
注意:在给其他用户修改密码时 需要具有DBA的权限或拥有alter user的系统权限
命令:alter user 【用户名】 identified by 【新密码】
删除用户
一般以DBA身份去删除用户
如果要删除的用户,已经创建了表,要在删除时加上一个参数 cascade
命令:drop user 【用户名】 [cascade]
二、权限和角色
刚刚创建完的新用户是没有任何权限的,甚至连登录数据库的权限都没有。这是时候使用conn 【用户名】/【密码】会提示没有权限。
在新建一个用户之后还要对这个用户进行授权操作。当然了,要使用有能力授权的用户,如sys、system
权限包含系统权限和对象权限
系统权限:用户对数据库的相关权限
对象权限:用户对其他用户的数据对象操作的权限
角色
角色是指由系统权限集合。通常给某个用户授予权限时如果没有角色存在的话,那么需要一条一条的操作,角色的存在
就是使得授权变得很方便。通常一个角色由多个系统权限组成。常用的角色有三个connect(7种权限)、dba、resource(在任何表空间建表)。
这里只是简单的提一下,在以后会作为一个专题进行研究。
使用grant命令给用户分配权限:
grant 【权限名】 to 【用户名】
分配角色:
grant 【角色名】 to 【用户名】
收回权限:
revoke 【权限名】 from 【用户名】
举个例子来说明:
1、创建用户
create user stu identified by stu;
2、使stu能够被连接
grant create session to stu;
3、让stu能够在任何表空间下建表
grant resource to stu
3、创建一个简单的表
create table users(name varchar2(10),age number(2));
4、插入几条数据
insert into users values('houjinxin',22);
5、登录到scott给stu授权让stu可以查看scott下的emp表
grant select on emp to stu;
6、登录到stu下查看emp表
select * from scott.emp;
如果这时想要更新scott.emp中的数据
update scott.emp set ename='ok2' where ename='ok';
会提示ORA-01031: 权限不足 。因为scott只给了stu查看的权利,如果仍然想更新,要到scott下进行授权
7、登录到system下收回resource角色
revoke resource from stu;
8、登录scott下收回select 权限
revoke select on emp from stu;
这是stu就不能再查询scott.emp的数据了
权限的传递
当希望stu用户可以去查询scott的emp表时,还希望stu能够把这个权限继续传给其他用户时
如果要传递的是对象权限,就加入with grant option
grant select on emp to stu with grant option
如果是系统权限:就加上with admin option
grant connect to stu with admin option
当system给stu授权时,会给stu给其他用户授权的能力
做个实验来验证下
1、登录到system用户下,重新建立两个用户
create user hou identified by hou;
create user jin identified by jin;
并为hou分配connect角色
grant connect to hou with admin option;
2、登录到scott下个hou授权
grant select on emp to hou with grant option;
3、登录到hou下开始对jin授权
grant select on scott.emp to jin;
grant connect to jin;
4、登录到jin下查询scott.emp
select * from scott.emp;
到目前位置都正常,问题来了!
如果system收回分配给hou的权限,那么jin的权限会不会也被一起收回,继续实验。
5、登录到scott下收回hou的权限
revoke select on emp from hou;
revoke connect from hou;
6、登录到jin下看现象
发现仍然能够登录到jin上这说明connect角色并未被收回
而当查询scott.emp时却提示ORA-00942: 表或视图不存在
这说明系统权限和对象权限是不同的。对于系统权限,hou分配给jin之后不再收回,对象权限却随着hou的权限被收回也被同时收回了