图解Oracle用户管理

一 操作实例

首先以system用户登录;



创建用户dog,密码为wangwang;



用dog登录,不能登录;



需要授予create session权限,才能登录;



dog登录成功;



dog创建表,不能创建;



需要授予create table权限;此时还不能创建表,因为还不能对表空间操作;再授予connect和resource;



dog创建表成功;



口令可更改;可以使密码失效;可以锁定和解锁用户;



dog登录,因为前面设置了口令失效,dog登录时可更改口令;



oracle中一个用户可访问另一个用户的表;

dog访问scott的表,出错;



还需要授权;授权后访问scott的表成功;



收回权限;

下图命令打错了;



从system用户撤销dog的权限;



用户无用可删除之;



二 Oracle用户管理

http://www.cnblogs.com/mchina/archive/2012/09/12/2678091.html

SQL语句分为三类:DML、DDL、DCL,之前已经讲解完了DML和DDL,现在就差DCL操作的,DCL主要表示的是数据库的控制语句,控制的就是操作权限,而在DCL之中,主要有两个语法:GRANT、REVOKE; 权限的操作基础是需要有用户的,而这个时候就需要通过一个新的用户进行演示,而要想创建新用户则首先必须是具备管理员权限的sys、system两个用户操作。 范例:创建一个dog用户,密码为wangwang CONN sys/change_on_install AS SYSDBA; CREATE USER dog IDENTIFIED BY wangwang; 此时一个新的用户就创建完成了。 注意:“ORA-00988:口令缺失或无效” 错误,这种情况通常发生于创建 Oracle 例程时指定了非正常的全局数据库名称或系统用户密码。请注意全局数据库名称不能以数字开头,口令密码也不能由数字开头。 Oracle对密码的要求如下: 系统用户(SYS、SYSTEM)口令长度不能小于7个字符; 密码由1 到 30 个字符 (characters)组成; 必须以字母开头,不能是符号或者数字; 只接受字母,数字,以及三个符号 "#","_" and "$"; 密码不能包含像"SELECT","DELETE","CREATE"这类的 Oracle/SQL 关键字; 但是此时这个新创建的用户并不能登录,会提示如下的错误信息: ORA-01045: user DOG lacks CREATE SESSION privilege; logon denied 提示用户现在没有创建SESSION的权限,在之前曾经解释过,对于sqlplusw而言,每一个用户都表示一个SESSION,如果没有创建SESSION的权限就意味着不能登录,所以下面要授权。 范例:将CREATE SESSION的权限给dog用户 GRANT CREATE SESSION TO dog; 现在新用户登录成功之后,下面就可以执行表的创建操作。 CREATE SEQUENCE myseq; CREATE TABLE mytab(   id NUMBER PRIMARY KEY,  name VARCHAR2(50) ); 解释:关于数据表的保存问题 在Oracle之中所有的数据表都是保存在硬盘上的,但不是每一张数据表都保存在硬盘上的,而是表空间保存在硬盘上,而数据表保存在表空间之中。 如果把硬盘表示成整个一个图书馆的话,那么表空间就表示每一个书柜,每一张表就表示柜子上的一本书。 范例:将创建表的权限给dog用户 GRANT CREATE TABLE TO dog; 此时只是将数据表的创建权限给了dog用户,但是并没有把表空间的操作权限给dog用户,所以用户仍然无法创建表,因为表没有地方可以保存。 为了解决用户的授权操作,在Oracle之中为用户提供了许多的角色,每一个角色会包含多个权限,而角色主要有两个:CONNECT、RESOURCE; 范例:将CONNECT和RESOURCE TO dog; GRANT CONNECT,RESOURCE TO dog; 但是现在一旦存在了用户的操作,那么就需要有用户的管理操作,最简单的一个功能,用户有可能丢掉自己的密码。 范例:修改密码 ALTER USER dog IDENTIFIED BY miaomiao; 但是当管理员为一个用户重置一个密码之后,往往会希望用户在第一次登录的时候可以修改密码,所以此时可以通过如下的命令让密码失效: ALTER USER dog PASSWORD EXPIRE; 也可以控制一个用户的锁定操作: ALTER USER dog ACCOUNT LOCK; ALTER USER dog ACCOUNT UNLOCK; 以上是针对于一个基本的用户操作,但是在之前也学习过,不同的用户可以访问其他用户的数据表,此时只需要加上完整的“用户名.表名称”即可。 范例:使用dog用户查询scott.emp表 SELECT * FROM scott.emp; 但是现在却无法查找,此时需要将scott用户的权限授予dog用户才可以让dog用户访问scott用户的资源,主要的权限有四个:INSERT、DELETE、UPDATE、SELECT。 范例:将scott.emp表的SELECT和INSERT权限给dog用户 GRANT SELECT,INSERT ON scott.emp TO dog; 既然现在有授权的功能,那么就可以进行权限的回收,权限的回收使用REVOKE指令。 范例:回收dog用户的权限 REVOKE SELECT,INSERT ON scott.emp FROM dog; REVOKE CONNECT,RESOURCE,CREATE TABLE,CREATE SESSION FROM dog; 既然用户连权限都没了,那么按照中国的一句话:“卷铺盖走人”。 DROP USER dog CASCADE; 以上的所有操作都是由DBA负责。

相关文章

文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符...
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远...
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语...
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseErr...
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Or...
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点...