百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

从零开始学习Oracle之用户管理(oracle数据库用户管理)

sinye56 2024-09-24 00:05 61 浏览 0 评论

Oracle是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。用户管理包括管理用户账户、权限等。

1.账户管理

Oracle提供了许多语句,这些语句可以用来管理包括创建用户、删除用户、密码管理和权限管理等内容。Oracle数据库的安全性,需要通过账户管理来保证。

根据每个用户访问Oracle数据库的需求不同,Oracle需要赋予用户不同的操作权限,这是数据库管理员经常遇到的问题。如果管理员对用户权限分配不合理,将会对数据库造成一定的安全隐患。

Oracle 中用户登录数据库的方式主要有3种:

①密码验证方式:把验证密码放在Oracle数据库中,这是最常用的验证方式,同时安 全性也比较高。

②外部验证方式:这种验证的密码通常与数据库所在的操作系统的密码一致。

③全局验证方式:这种验证方式也不把密码放在Oracle数据库中,也是不常用的验证 方式。

1.1新建普通用户

创建新用户,必须有相应的权限来执行创建操作。在Oracle数据库中,创建用户时需要特别注意用户的密码必须以字母开头。

用户可以使用CREATE USER语句创建用户。语法规则如下:

CREATE USER username IDENTIFIED BY password
OR EXTERNALLY AS certificate_DN
OR GLOBALLY AS directory_DN
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace| tablespace_group_name]
[QUOTA size|UNLIMITED ON tablespace]
[PROFILE profile]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK]
  • username表示创建的用户的名称;
  • IDENTIFIED BY password表示以口令作为验证方式;
  • EXTERNALLY AS certificate_DN表示以外部验证方式;
  • GLOBALLY AS directory_DN表示以全局验证方式;
  • DEFAULT TABLESPACE表示设置默认表空间,如果忽略该语句,那么创建的用户就存在数据库的默认表空间中,如果数据库没有设置默认表空间,那么创建的用户就放在SYSTEM表空间中;
  • TEMPORARY TABLESPACE设置临时表空间或者临时表空间组,可以把临时表空间存放在临时表空间组中,如果忽略该语句,那么就会把临时文件存放到当前数据库默认的临时表空间中,如果没有默认的临时表空间,那么就会把临时文件存放到 SYSTEM的临时表空间中;
  • QUOTA表示设置当前用户使用表空间的最大值,在创建用户时可以有多个QUOTA来设置用户在不同表空间中能够使用的表空间大小,如果设置成UNLIMITED,表示对表空间的使用没有限制;
  • PROFILE设置当前用户使用的概要文件的名称,如果忽略了该子句,那么该用户就使用当前数据库中默认的概要文件;
  • PASSWORDEXPIRE用于设置当前用户密码立即处于过期状态,用户如果想再次登录数据库必须更改密码;
  • ACCOUNT用于设置锁定状态,如果设置成LOCK,那么用户不能访问数据库,如果设置成UNLOCK,那么用户可以访问数据库。

1.2修改用户信息

在Oracle数据库中,可以使用ALTER USER语句修改用户信息。具体使用的语法规则如下:

ALTER USER username IDENTIFIED
{BY password[REPLACE old_password]
| EXTERNALLY [AS certificate_DN]
| GLOBALLY [AS directory_DN]
}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace| tablespace_group_name]
[QUOTA size|UNLIMITED ON tablespace]
[PROFILE profile]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK]

上面的各个参数的含义和创建用户的参数含义一样。

1.3删除用户

在Oracle数据库中,可以使用DROP USER语句删除用户,具体的语法规则如下:

DROP USER username [CASCADE];
  • username 为用户的名称;
  • 关键字CASCADE是可选参数,如果要删除的用户中没有任何数据库对象,可以省略CASCADE关键字。

DROPUSER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,命令则不会生效,直到用户对话被关闭后才能生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

2.权限管理

权限管理主要是对登录到Oracle的用户进行权限验证。所有用户的权限都存储在Oracle的权限表中,不合理的权限规划会给Oracle服务器带来安全隐患。数据库管理员要对所有用户的权限进行合理规划管理。Oracle权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。

2.1授权

授权就是为某个用户授予权限。合理的授权可以保证数据库的安全。Oracle中可以使用GRANT语句为用户授予权限。

在Oracle中,必须是拥有GRANT权限的用户才可以执行GRANT语句。授予权限包括 授予系统权限和授予对象权限。

授予系统权限的语法如下:

GRANT system_privilege
|ALL PRIVILEGES TO {user IDENTIFIED BY password|role|}
[WITH ADMIN OPTION]
  • system_privilege表示创建的系统权限名称;
  • ALL PRIVILEGES 表示可以设置除SELECT ANY DICTIONARY权限以外的所有系统权限;
  • {user IDENTIFIED BY password|role|}表示设置权限的对象,role代表的是设置角色的权限;
  • WITH ADMIN OPTION表示当前给予授权的用户还可以给其他用户进行系统授权的赋予。

授予对象权限的语法规则如下:

GRANT object_privilege|ALL
ON schema.object
TO user|role
[WITH ADMIN OPTION]
[WITH THE GRANT ANY OBJECT]
  • object_privilege表示创建的对象权限名称;如果选择ALL,则代表授予用户所有的对象权限,这个权限在使用的时候一定要注意;
  • schema.object表示为用户授予的对象权限使用的对象;
  • userlrole中的user代表是用户,role代表是角色;
  • WITH ADMIN OPTION表示当 前给予授权的用户还可以给其他用户进行系统授权的赋予;
  • WITH THE GRANT ANY OBJECT表示当前给予授权的用户还可以给其他用户进行对象授权的赋予。

2.2回收权限

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。Oracle中使用REVOKE语句取消用户的某些权限。

收回权限包括收回系统权限和收回对象权限。

只有数据库管理员才能收回系统权限,而且撤销系统权限的前提是当前的用户已经存在要撤销的系统权限。收回系统权限的语法规则如下:

REVOKE system_privilege
FROM user|role

使用REVOKE语句也可以收回对象权限。具体的语法规则如下:

REVOKE object_privilege|ALL
ON schema.object
FROM user|role
[CASCADE CONTRAINTS]
  • [CASCADE CONTRAINTS]选项表示该用户授予其他用户的权限也一并收回。

收回系统权限和收回对象权限有不同的地方。如果撤销用户的系统权限,那么该用户授予其他用户的系统权限仍然存在;如果撤销用户的对象权限,那么该用户授予其他用户的对象权限也被收回。

2.3查看权限

在Oracle中,用户的权限存放在数据库的数据字典中,用户的系统权限存放在数据字典DBA_SYS_PRIVS中,用户的对象权限存放在数据字典DBA_TAB_PRIVS中。数据库管理员可以通过用户名查看用户的权限。

查看ANONYMOUS用户的系统权限,实现代码如下:

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='ANONYMOUS';

查看ANONYMOUS用户的对象权限,实现代码如下:

SELECT PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='ANONYMOUS';
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;

3.角色管理

角色相当于Windows操作系统中的用户组,可以集中管理数据库或服务器的权限。

3.1角色概述

数据库角色是针对某个具体数据库的权限分配,数据库用户可以作为数据库角色的成员,继承数据库角色的权限,数据库管理人员也可以通过管理角色的权限来管理数据库用户的权限。

用户和角色是不同的,用户是数据库的使用者,角色是权限的授予对象,给用户授予角色,相当于给用户授予一组权限。数据库中的角色可以授予多个用户,一个用户也可以被授予多个角色。角色是数据库中管理员定义的权限集合,可以方便地对不同用户进行权限授予。

3.2创建角色

在实际的数据库管理过程中,通过创建角色,可以分组管理用户的权限。

创建角色的具体语法如下:

CREATE ROLE role
[NOT IDENTIFIED| IDENTIFIED BY[ password]| IDENTIFIED BY
EXETERNALLY|IDENTIFIED BY GLOBALLY]
  • NOT IDENTIFIED表示创建角色的验证方式为不需要验证;
  • IDENTIFIED BY[ password]表示创建角色的验证方式为口令验证;
  • IDENTIFIED BY EXETERNALLY表示创建角色的验证方式为外部验证;
  • IDENTIFIED BY GLOBALLY表示创建角色的验证方式为全局验证。

3.3设置角色

角色创建完成后不能直接使用,还需要把角色赋予用户才能使角色生效。将角色赋予用户的具体语法如下:

GRANT role TO user

一个用户可以同时被赋予多个角色,被赋予的多个角色是否生效可以自行设置。设置的方法如下:

SET ROLE role
SET ROLE ALL
SET ROLE ALL EXCEPT role
SET ROLE NONE
  • SET ROLE role表示指定的角色生效;
  • SET ROLE ALL表示设置用户的所有角色都生效;
  • SET ROLE ALL EXCEPT role表示设置EXCEPT后的角色不失效;
  • SET ROLE NONE表示设置用户的角色都失效。

3.4修改角色

角色创建完成后,还可以修改其内容。具体的语法规则如下:

ALTER ROLE role
[NOT IDENTIFIED| IDENTIFIED BY[ password]| IDENTIFIED BY
EXETERNALLY| IDENTIFIED BY GLOBALLY]

上面的代码只能修改角色本身,如果想修改已经赋予角色的权限或者角色,则要使用GRANT或者REVOKE来完成。

3.5查看角色

用户可以查询数据库中已经存在的角色,也可以查询指定用户的角色的相关信息。

查询SYSTEM用户的角色,实现代码如下:

SELECT GRANTED_ROLE,DEFAULT_ROLE FROM DBA_ROLE_PRIVS
WHERE GRANTEE='SYSTEM';

3.6删除角色

对于不再需要的角色,可以删除。在删除角色的同时,所有拥有该角色的用户也将自动撤销该角色所授予的权限。

删除角色的语法格式如下:

DROP ROLE role

4.管理概要文件 PROFILE

Oracle数据库中的概要文件为PROFILE,它为数据库的管理带来极大的便利。

4.1PROFILE概述

PROFILE就是 Oracle数据库中的概要文件,主要用于存放数据库中的系统资源或者数据库限制使用的内容。默认情况下,如果用户没有创建概要文件,则使用系统的默认概要文件,名称为DEFAULT。

概要文件会给数据库管理员带来很大的便利,数据库管理员可以先对数据库中的用户分组,根据每一组的权限不同,建立不同的概要文件,这样便于管理用户。值得注意的是,概要文件只能用于用户,不能在角色中使用。

4.2创建概要文件

数据库中默认的概要文件为PROFILE,根据实际的需要,可以创建概要文件。 创建概要文件的语法格式如下:

CREATE PROFILE profile
LIMIT
{resource_parameters|password_parameters}

resource_parameters表示资源参数,主要包括如下:

  • CPU PER SESSION:表示一个会话占用CPU的总量。
  • CPU PER_CALL:表示允许一个调用占用CPU的最大值。
  • CONNECT TIME:代表运行一个持续的会话的最大值。

password_parameters表示口令参数,主要包括如下:

  • PASSWORDLIFE_TIME:指的是多少天后口令失效。
  • PASSWORD REUSE TIME:指密码保留的时间。
  • PASSWORD GRACE TIME:指设置密码失效后锁定。

4.3修改概要文件

使用ALTER PROFILE语句可以修改已经存在的概要文件,语法格式如下:

ALTER PROFILE profile
LIMIT
{resource_parameters|password_parameters}

4.4删除概要文件

对于不需要的概要文件,可以对其执行删除操作。具体的语法格式如下:

DROP PROFILE profile [CASCADE]

如果删除的概要文件已经被用户使用过,那么删除概要文件时要加上CASCADE关键词,这样用户所使用的概要文件也被撤销;如果概要文件没有被使用过,可以省略该关键词。

在Oracle中,默认的概要文件PROFILE是不能删除的。

概要文件被保存在数据字典DBA_PROFILES中,如果想查询概要文件,可以使用如下语句:

SELECT * FROM DBA_PROFILES;

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: