Oracle数据库用户管理

1. 用户与模式的关系

Oracle数据库的安全保护流程可以分为3个步骤。

首先,用户向数据库提供身份识别信息,即提供一个数据库账号。
其次,用户还需要证明他们给出的身份识别信息是有效的,这是通过输入密码来实现的,用户输入的密码经过数据库的核对,确认用户提供的密码是否正确。
最后,假如密码是正确的,那么数据库认为身份识别信息是可信赖的。
此时,数据库将会在基于身份识别信息的基础上确定用户拥有的权限,即用户可以对数据库执行什么操作。因此,为了确保数据库的安全,首要的问题就是对用户进行管理。

这里所谓的用户并不是指数据库的操作人员,而是在数据库中定义的一个名称,更准确地说它是账户,只是习惯上称其为用户,它是Oracle数据库的基本访问控制机制,当连接到Oracle数据库时,操作人员必须提供正确的用户名和密码。

Oracle提供了一些特权用户,如sysdba,这类用户主要用于执行数据库的维护操作,如启动数据库、关闭数据库、建立数据库,以及执行备份和恢复等操作。
Oracle提供了默认的特权用户sys,当以特权用户身份登录数据库时,必须带有AS SYSDBA,
例如下面的代码:
–system/12345中的12345是system的登录密码

connect system/12345 as sysdba;

与用户密切关联的另一个概念是模式,模式也称作方案(schema)。模式实际上是用户拥有的数据库对象的集合。在Oracle数据库中,对象是以用户来组织的,用户与模式是一一对应的关系,并且二者名称相同。下图显示了用户与模式的关系。其中,scott用户拥有的所有对象都属于scott模式,而hr用户拥有的所有对象都属于hr模式。

当访问数据库对象时,需要注意如下一些事项:在同一个模式中不能存在同名对象,但是不同模式中的对象名称则可以相同。用户可以直接访问其他模式对象,但如果要访问其他模式对象,则必须具有该对象的相应访问权限。例如,用户scott可以直接查看其模式中的emp表,但如果用户hr要查看scott模式中的emp表,则必须具有在emp表上进行SELECT操作的权限。当用户要访问其他模式对象时,必须附加模式名作为前缀。

2. 创建与管理用户

标识用户是Oracle数据库管理的基本要求之一,每一个能够连接到数据库的用户都必须是系统的合法用户。用户想要使用Oracle的系统资源(查询数据、创建表等),必须要拥有相应的权限。创建用户并授予权限是Oracle系统管理员的基本任务之一。

2.1. 身份验证

Oracle为用户账户提供了以下3种身份验证方法:

密码验证:

当一个使用密码验证机制的用户试图连接到数据库时,数据库会核实用户是否是一个有效的数据库账户,并且验证密码与该用户在数据库中存储的密码是否相同。

外部验证:

外部验证是指当用户试图连接到数据库时,数据库会核实用户是否是一个有效的数据库账户,并且确认该用户是否已经完成了操作系统级别的身份验证。外部验证用户并不在数据库中存储一个验证密码。

全局验证:

全局验证是指用户不在数据库中存储验证密码,而是通过一种高级安全选项所提供的身份验证服务来进行。在上述3种验证方式中,密码验证是最常用的验证方法。

2.2. 创建用户

要创建一个新的用户(这里均指密码验证用户,以下不再重复说明),可采用CREATE USER命令。其语法格式如下:

CREATE USER user_name IDENTIFIED BY pass_word

[or IDENTIFIED EXETERNALLY]
[or IDENTIFIED GLOBALLY AS ‘CN=user’]
[DEFAULT TABLESPACE tablespace_default]
[TEMPORARY TABLESPACE tablespace_temp]
[QUOTA [integer K[M]] [UNLIMITED] ] ON tablesapce_ specify1
[,QUOTA [integer K[M]] [UNLIMITED] ] ON tablesapce_ specify2
[,…]…ON tablespace_specifyn
[PROFILES profile_name]
[ACCOUNT LOCK or ACCOUNT UNLOCK]

user_name:用户名,一般为字母数字型和“#”及“”符号。
pass_word:用户口令,一般为字母数字型和“#”及“
”符号。
IDENTIFIED EXETERNALLY:表示用户名在操作系统下验证,这种情况下要求该用户必须与操作系统中所定义的用户名相同。
IDENTIFIED GLOBALLY AS ‘CN=user’:表示用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。
DEFAULT TABLESPACE tablespace_default:表示该用户在创建数据对象时使用的默认表空间。
TEMPORARY TABLESPACE tablespace_temp:表示该用户所使用的临时表空间。
[QUOTA [integer K[M]] [UNLIMITED] ] ON tablesapce_ specify1 :表示该用户在指定表空间中允许占用的最大空间。
[PROFILES profile_name]:资源文件的名称。
[ACCOUNT LOCK or ACCOUNT UNLOCK]:用户是否被加锁,默认情况下是不加锁的。

2.2.1. 创建用户并指定默认表空间和临时表空间

创建一个用户为hr,口令为hrsoft,并设置默认的表空间为users,临时表空间为temp,代码如下:

create user hr identified by hrsoft default tablespace users temporary tablespace temp;

2.2.2. 创建用户并配置其在指定表空间上的磁盘限额

为了避免用户在创建表和索引对象时占用过多的空间,可以配置用户在表空间上的磁盘限额。在创建用户时,可通过QUOTA xxxM ON tablespace_ specify子句配置指定表空间的最大可用限额。创建一个用户为mr,口令为mrsoft,默认表空间为users,临时表空间为temp,并指定该用户在TBS_TEST_1表空间上最多可使用的大小为10 MB,代码如下:

create user mr identified by mrsoft default tablespace users temporary tablespace temp quota 10m on tbs_test_1;

如果要禁止用户使用某个表空间,则可以通过QUOTA关键字设置该表空间的使用限额为0。

2.2.3. 创建用户并配置其在指定表空间上不受限制

要设置用户在指定表空间上不受限制,可以使用QUOTA UNLIMITED ON tablespace_ specify子句。
创建一个用户为ar,口令为arsoft,临时表空间为temp,默认表空间为tbs_test_1,并且该用户使用tbs_test_1表空间不受限制。
代码如下:

create user ar identified by arsoft default tablespace tbs_test_1 temporary tablespace temp quota unlimited on tbs_test_1;

在创建完用户之后,需要注意以下几点:

  • 如果建立用户时不指定DEFAULT TABLESPACE子句,那么Oracle会将SYSTEM表空间作为用户的默认表空间。
  • 如果建立用户时不指定TEMPORARY TABLESPACE子句,那么Oracle会将数据库默认临时表空间作为用户的临时表空间。
  • 初始建立的用户没有任何权限,所以为了使用户可以连接数据库,必须授权其CREATE SESSION权限。
  • 如果建立用户时没有为表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,用户将不能在相应的表空间上建立数据对象。
  • 初始建立的用户没有任何权限,不能执行任何数据库操作。

3. 修改用户

修改用户的语法与创建的用户的语法基本相似,只是把创建用户语法中的CREATE关键字替换成ALTER。

3.1. 修改用户的磁盘限额

修改用户mr在表空间上的磁盘限额为20 MB(原始为10MB,增加10 MB)
代码如下:

alter user mr quota 20m on tbs_test_1;

3.2. 修改用户的口令

修改用户mrt的新口令为123456(原始为mrsoft)
代码如下:

alter user mr identified by 123456;

3.3. 解锁被锁住的用户

Oracle默认安装完成后,为了安全起见,很多用户处于LOCKED状态,DBA可以对LOCKED状态的用户解除锁定,新创建的用户默认都是OPEN可用状态。
–查询用户账号状态

select username,account_status from dba_users;

使用ALTER USER命令解除被锁定的账户DIP
代码如下:

alter user DIP account unlock;

4. 删除用户

删除用户可以通过DROP USER语句来完成,删除用户后,Oracle会从数据字典中删除用户、方案及其所有对象方案。
其语法格式如下:

drop user user_name [CASCADE]

user_name:要删除的用户名。
CASCADE:级联删除选项,如果用户包含数据库对象,则必须加CASCADE选项,此时会连同该用户拥有的对象一起删除。
使用DROP USER 语句删除用户ar,并连同该用户拥有的对象一起删除
代码如下:

drop user ar cascade;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值