暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第二章Oracle用户管理

悦悦学姐 2021-05-25
482

第二章Oracle用户管理



【目标】


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


2.掌握基本的权限管理


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




【内容】


用户的创建、删除、修改


创建用户


语法:createuser 用户名identifiedby 密码;


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


案例:新建用户abc





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


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



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


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


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


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





DBA: 数据库管理员


修改密码


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


1. 修改自己的密码




修改其他用户的密码


语法:alteruser 用户名identifiedby 密码;



修改用户信息


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


修改用户密码


alter user 用户名identifiedby 密码;


解锁用户/锁定用户


解锁用户:alter user 用户名accountunlock;


锁定用户:alter user 用户名accountlock;



删除用户


语法:drop user 用户名;



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


drop user abc cascade;



基本的权限管理




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


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


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


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


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




2.1授权


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


系统权限:createtablecreatesessiondropuserdroptable等等


角色权限:dba管理员


connect:连接数据库


resource:创建表的权限


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


步骤:



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


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


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


grantconnectresourceto abc1;




  1. abc1 连接数据库:





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


步骤:



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


  2. abc1用户授权:


grantselect on scott.emp to abc1;




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





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


步骤:



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


  2. abc1用户授权:


grantall on scott.emp to abc1;



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


  2. scott emp表中插入一条数据:


insertinto scott.emp(empno, ename) values(123, zhangsan);





2.2 回收权限


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


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


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


步骤:



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


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




  1. 连接abc1conn abc1/abc1;


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





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


步骤:



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


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




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





2.3 给其他用户授权的能力


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


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




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


grant 权限to用户名withgrant option;




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


步骤:



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


        2. abc1用户授权: grant create sessioncreate table to abc1 with admin option;


        3. 创建用户abc2create user 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 abc1 with grant option;


  3. 创建用户abc3create user abc3 identified by abc3;


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


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


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


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


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







    1. 多级权限回收/撤销


语法:revoke权限from用户;



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


步骤:


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


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



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


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管理员连接数据库:connsys/system as sysdba;


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


Revokecreate session from abc1;




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





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


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




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


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




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


    1. 基本操作


  • 对表的操作


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


select *from user_tables;


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


selecttable_namefrom user_tables;


  • 对用户的操作


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


Select* from all_users;


查询dba:select* from dba_users;


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


  • 对权限的操作

    查询所有具有系统权限的dba

Select* from dba_sys_privs where grantee=DBA;

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


Select* from dba_roles;

profile管理用户

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


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


步骤:


1.先创建一个profile文件


 createprofilelock_account(文件名)limit failed_login_attemptes 3 password_lock_time 2;


2.profile文件指定给用户


alteruserabc2 profile lock_account;





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




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


解除用户的profile文件


Alteruser abc2 profile default;




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


步骤:


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


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


createprofilechange_pwd limitpassword_life_time10 password_grace_time 2;


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


Alteruser abc2 profile change_pwd;



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


步骤:


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


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


Createprofile password_history limit password_life_time 10password_grace_time 2password_reuse_time 2;





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




查询所有的profile文件


select * from dba_profiles;


  • 删除profile文件


dropprofile profile文件名;


drop profilepassword_history;


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





文章转载自悦悦学姐,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论