oracle用户管理

来源:互联网 发布:淘宝首页装修要多少钱 编辑:程序博客网 时间:2024/06/03 21:58

第二章 Oracle用户管理

 

【目标】

1. 掌握用户的创建、删除、修改

2. 掌握基本的权限管理

3. 了解数据字典及基本操作

 

【内容】

一、       用户的创建、删除、修改

u 创建用户

语法:createuser 用户名 identified by 密码;

注:在oracle中创建用户只能由管理员或者具有管理员的权限的用户创建。

案例:新建用户abc

 

新建的用户是没有任何权限的,包括连接数据库的权限。

新创建的用户是没有任何权限的,直接登录会报如下错误:

此时必须有管理员授权,才可以连接数据库。

如果新建的用户想要连接数据库,就需要被赋予权限,只有管理员才能赋予新用户权限。

赋予用户连接数据库的权限:grant create session to abc;

赋予用户dba的角色:grantdba to abc;

 

DBA: 数据库管理员

u 修改密码

在oracle中如果要修改自己的密码直接使用passw[ord]命令,如果要修改其他用户的密码则必须具备dba角色或alteruser权限

1. 修改自己的密码


2. 修改其他用户的密码

语法:alter user 用户名 identified by 密码;

u 修改用户信息

   在oracle数据中修改用户信息只能由管理员或者具有管理员权限的用户操作。

1. 修改用户密码

             alter user 用户名identified by 密码;

2. 解锁用户/锁定用户

解锁用户: alter user 用户名account unlock;

锁定用户:alter user 用户名 account lock;

 

u 删除用户

语法:drop user 用户名;

如果当前用户拥有数据库表、视图、序列等等,删除用户就需要指定关键字:cascade.

drop user abc cascade;

 

二、       基本的权限管理

 

Oracle权限:系统权限和用户权限(对象权限/角色权限)

系统权限:创建表,创建用户,修改表或者用户,视图等等。

对象权限:包含另外对象数据库信息的查询,修改等等操作的

Oracle 对象之间访问数据库内容,需要用户名.表名访问。

对象与对象之间是不可以直接操作的,也是需要具备相应的权限。

 

2.1 授权

语法:grant 权限/角色 to 用户名;

系统权限:create tablecreate sessiondrop userdrop table等等

角色权限:dba 管理员

              connect:连接数据库

              resource: 创建表的权限

案例1:创建用户abc1,并赋予他连接数据库和创建表的权限。

步骤:

1. sys管理员连接数据库:conn sys/system as sysdba;

2. 新建用户abc1create user abc1 identified byabc1;

3. abc1用户授权:事实上、

grant connectresource to abc1;

4. abc1 连接数据库:

 

案例2: 授予abc1 查询scott 用户emp表的权限。

步骤:

1.       sys管理员连接数据库:conn sys/system as sysdba;

2.       abc1用户授权:

grant select on scott.emp toabc1;

3.       连接abc1,查询scott用户下emp

 

案例3: 授予abc1用户scott的emp表的所有权限。

步骤:

1. sys管理员连接数据库:conn sys/system as sysdba;

2. abc1用户授权:

grant all on scott.emp to abc1;

3. abc1 连接数据库:conn abc1/abc1;

4. scottemp表中插入一条数据:

insert into scott.emp(empno,ename) values(123, ‘zhangsan’);

 

2.2 回收权限

Oracle中只有管理员才可以回收权限。

语法:revoke 权限/角色from 用户名;

案例1: 回收abc1对于scott的emp表的所有权限。

步骤:

1. sys管理员连接数据库: conn sys/system as sysdba;

2. 撤销abc1的权限:revoke all on scott.emp fromabc1;

3. 连接abc1conn abc1/abc1;

4. 查询下scott用户的emp表:select * from scott.emp;

 

案例2: 回收abc1对于连接数据库的权限。

步骤:

1.       sys管理员连接数据库: conn sys/system as sysdba;

2.       撤销abc1的权限:revoke connect from abc1;

3.       abc1连接数据库:conn abc1/abc1;

 

2.3 给其他用户授权的能力

with admin option: 授予系统相关的admin权限

with grant option:授予对象相关的grant 权限

 

语法:grant 权限to 用户名 with admin option;

  grant 权限 to 用户名with grant option;

 

案例.1:给abc1赋予连接数据库,创建表和授予别的用户的权限的权限,并授予abc2用户连接数据库的权限。

步骤:

1.       sys管理员连接数据库: conn sys/system as sysdba;

2.       abc1用户授权: grant create session create table to abc1 with adminoption;

3.       创建用户abc2createuser abc2 identified by abc2;

4.       abc1连接数据库: conn abc1/abc1;

5.       abc1abc2授权create sessiongrant create session to abc2;

6.       abc2连接数据库:conn abc2/abc2;

 

案例2:给abc1赋予scott用户下emp表的所有权限和授予别人权限的权限,并给abc3用户授予scott用户下emp表的所有权限。

步骤:

1.       sys管理员连接数据库: conn sys/system as sysdba;

2.       abc1用户授权: grant all on scott.emp to abc1with grant option;

3.       创建用户abc3createuser abc3 identified by abc3;

4.       abc3用户授予连接数据库的权限:grant create session to abc3;

5.       abc1连接数据库: conn abc1/abc1;

6.       abc1abc3授权all on scott.empgrant all on scott.emp to abc3;

7.       abc3连接数据库:conn abc3/abc3;

8.       abc3查询scott用户下emp表的内容:select * from scott.emp;

 

 

2.3  多级权限回收/撤销

语法:revoke权限 from 用户;

      

案例1: 结合2.2中案例2,回收abc1对于scottemp的所有权限,测试abc3是否还有scottemp表的权限。回收对象权限

       步骤:

1. sys管理员连接数据库: conn sys/system as sysdba;

2.回收abc1对于scott用户emp表的权限;

3.测试abc3对于scott emp表的权限:

      connabc3/abc3;

select * from scott.emp;

结果: abc1没有emp表上的权限,abc3没有了scott用户emp表的权限。

 

总结:对于对象权限,sys——>abc1——>abc3,sys回收abc1权限的时候,abc3的权限也被回收了。

 

案例2:结合2.2中案例1,回收abc1连接数据库的权限,测试abc2是否还可以连接数据库。

步骤:

1.sys管理员连接数据库:conn sys/system as sysdba;

2.Sys回收abc1create session的权限,测试abc1是否还能连接数据库

Revoke create session from abc1;

3. 测试abc2是否可以连接数据库。conn abc2/abc2;

 

结果:abc1不能连接数据库,abc2依然可以连接数据库。

总结:对于系统权限,sys——>abc1——>abc2,然后由sysabc1的权限回收,abc2依然可以连接数据库。

 

练习:不要用sys回收abc2abc3,多测试几个级联用户,由上级回收下级的权限,测试下下级的权限是否还可以使用。

A with admin/grant option——>B——CA回收B,测试C是否还具备那个权限。

 

三 数据字典及基本操作,用户管理

3.1   基本操作

u 对表的操作

1.查看当前用户所拥有的表:

select * from user_tables;

查看当前用户所有表的表名:

select table_name from user_tables;

u 对用户的操作

1.  查询当前有多少用户(必须用管理员身份才可以查询)

Select *from all_users;

查询dba:select * from dba_users;

查询当前用户的信息:select * from user_users;

 

u 对权限的操作

1.      查询所有具有系统权限的dba:

Select *from dba_sys_privs where grantee=’DBA’;

2.      查询数据库中所有的角色role

Select *from dba_roles;

 

3.2   profile管理用户

u 创建profile文件与指定给用户  

案例1. 如果用户连续3次登陆失败,锁定用户,锁定时间2天.lock

步骤:

1.先创建一个profile文件

  create profile lock_account(文件名) limit failed_login_attempts3 password_lock_time 2;

2.profile文件指定给用户

alter user abc2 profilelock_account;

 

3.abc2连续三次登陆失败,账号锁定。

4.       解锁abc2用户 alter userabc2 account unlock;(管理员身份解锁)

 

u 解除用户的profile文件   

Alter user abc2 profile default;

 

案例2用户每隔10天修改密码,宽限2天。

步骤:

1.sys管理员连接数据库:conn sys/system as sysdba;

2.新建profile文件,用来限制用户十天修改密码,宽限期是2天。

create profile change_pwdlimit password_life_time 10password_grace_time 2;

3.profile配置文件指定给相应的用户

Alter user abc2profile change_pwd;

案例3:限制用户修改密码不能使用以前用过的密码

步骤:

1.sys管理员连接数据库:conn sys/system as sysdba;

2.新建profile文件,限制用户修改密码,不能使用用过的密码

Create profilepassword_history limit password_life_time 10 password_grace_time 2 password_reuse_time2;

 

3.abc2连接数据库,然后连续两次修改密码:

 

u 查询所有的profile文件

select *from dba_profiles;

u 删除profile文件

drop profileprofile文件名;

drop profilepassword_history;

如果profile文件已经指定给用户了,就需要加上cascade关键字。

原创粉丝点击