Oracle笔记(十四) 用户管理

Oracle笔记(十四) 用户管理

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负责。

时间: 2024-10-05 04:27:52

Oracle笔记(十四) 用户管理的相关文章

Oracle学习(十四):管理用户安全

--用户(user) SQL> --创建名叫 grace 密码是password 的用户,新用户没有任何权限 SQL> create user grace identified by password; 验证用户: 密码验证方式(用户名/密码) 外部验证方式(主机认证,即通过登陆的用户名) 全局验证方式(其他方式:生物认证方式.token方式) 优先级顺序:外部验证>密码验证 --权限(privilege) 用户权限有两种: System:允许用户执行对于数据库的特定行为,例如:创建表.

Oracle学习(十四):管理用户安全性

--用户(user) SQL> --创建一个名为 grace password是password 的用户,新用户没有不论什么权限 SQL> create user grace identified by password; 验证用户: password验证方式(username/password) 外部验证方式(主机认证,即通过登陆的username) 全局验证方式(其它方式:生物认证方式.token方式) 优先级顺序:外部验证>password验证 --权限(privilege) 用户

Oracle笔记 十四、查询XML操作、操作系统文件

--1.随机数 select dbms_random.value from dual; select mod(dbms_random.random, 10) from dual; --0-9随机数 select abs(mod(dbms_random.random, 10)) from dual; --40-49随机数 select 40 + abs(mod(dbms_random.random, 10)) from dual;   --2.Xml declare words clob; xml

Oracle笔记(四) 简单查询、限定查询、数据的排序

Oracle笔记(四) 简单查询.限定查询.数据的排序 一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统.ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言. Oracle数据库之所以发展的很好,主要也是因为Oracle是全世界最早采用SQL语句的数据库产品. SQL功能强大,概括起来,它可以分成以下几组: DML(Data Manipulation La

swift 笔记 (十四) —— 构造过程

构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们通常会定义一个方法来完成,这个方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自定义化的处理. 为存储型属性设置初始值 类和结构体在生成实例那一刻,必须为所有的属性赋以特定的初始值. 要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一个初始值. 上面说的这两种情况,都不会触发存储型属性的监听者行为(property observer). struc

Swift学习笔记十四:构造(Initialization)

类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值.存储型属性的值不能处于一个未知的状态. 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值.以下章节将详细介绍这两种方法. 注意: 当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器(property observers). 一.基本语法 class Human{ var name :String init(){ name = "human" } init(n

laravel3学习笔记(十四)

原作者博客:ieqi.net ==================================================================================================== 运行时配置 在 Laravel3 中很多地方我们都可以看到“约定大于配置”的影子,我本人也很喜欢这种工程哲学尤其是在框架领域,当然这并不能代替所有的配置.我们知道 Laravel3 中,主要配置都写在 application/config 文件夹下,在应用逻辑中,往往

Oracle基础笔记十四

第十四章 高级子查询 1.子查询 子查询 (内查询) 在主查询执行之前执行 主查询(外查询)使用子查询的结果 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM  table); 问题:查询工资大于149号员工工资的员工的信息 SELECT last_name FROM   employees WHERE  salary > (SELECT salary FROM   employees WHERE

Oracle学习笔记十四 内置程序包

扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STANDARD 定义和扩展PL/SQL语言环境 DBMS_LOB 提供对 LOB数据类型进行操作的功能 DBMS_OUTPUT 处理PL/SQL块和子程序输出调试信息 DBMS_RANDOM 提供随机数生成器 DBMS_SQL 允许用户使用动态 SQL DBMS_XMLDOM 用DOM模型读写XML类型的数

Linux学习笔记之常用用户管理类命令

开始这个话题之前应该先了解下/etc/shadow这个文件中的构造,对于列所代表的意思大体有个了解,先以ftpuser账户来介绍:后边会给出一些相应的例题来做使用说明补充(好吧我承认,这,又是一篇博客作业^_^万恶的标题党). ftpuser:$6$T9WUEls/$AK4hTO1bZ7MXW7VoMej8e7tVG1qqxPy5axVJAAIz4m6uuzZmoYDcQjUG2XlXx7klx/i8yJ1luZDtoKYwJAMa4.:16929:0:99999:7:5:: 总共有9个字段被"