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

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

sinye56 2024-09-24 00:05 16 浏览 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;

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: