Oracle从入门到精通-用户管理_sql

4 Oracle 用户管理

4.1 创建用户

概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。

举例:

create user xiaoming identified by m123

命令解析:

关键词:

create user

identified by

xiaoming:用户的名字

m123:密码(oracle中密码必须以字母开头

回车时会报错:

报错原因:你现在是普通,权限不足

解决方案:conn system/manager然后再输入

create user xiaoming identified by m123

然后就可以正常运行了,创建成功

(系统管理员可以修改其他用户的密码)

4.2 删除用户

概述:一般以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有drop user的权限。比如:drop user 用户名[cascade]

``在删除用户时,注意:

如果要删除的用户,已经创建了一个表,那么就需要在删除时带一个参数 cascade;

(cascade表示删除用户包括用户创建的表,级联删除)

4.3 给登录用户赋权

grant connect to xiaoming

给小明赋登录权限

(oracle大概有140多种权限,权限大概分为两种:系统权限和对象权限)

系统权限:是指用户对数据库访问的相关权限。

对象权限:是指用户对其他用户的数据对象访问的权限。

数据对象:是指用户对象创建的表、视图、存储过程、触发器一系列的数据库里的对象。

对象权限简单的划分:select,insert,update,delete,all,create index

eg.

希望xiaoming用户可以去查询emp表:

SQL>grant resource to xiaoming;

希望xiaoming用户可以去查询scott用户的emp表:(此语句应该由scott用户或者超级管理员来授权)

SQL>grant select on emp to xiaoming

希望xiaoming用户可以去修改scott用户的emp表:(此语句应该由scott用户或者超级管理员来授权)

SQL>grant update on emp to xiaoming

希望xiaoming用户可以去增删改查scott用户的emp表:(此语句应该由scott用户或者超级管理员来授权)

SQL>grant all on emp to xiaoming

·方案:(这条命令是用xiaoming的身份来进行查询的)方案的概念以后讲解

SQL>select * from scott.emp

4.4 connect角色:权限的批量授权(形象比喻:当官)

角色分两种:自定义角色 和 预定义角色

预定义角色:在安装数据库的时候直接分配好了

自定义角色:比较灵活,根据需要自定定义

oracle的精细度高

另外两个角色:

·dba角色:轻易不要授权,如果将该角色授予给某一个普通的用户,那么这个用户就拥有了dba所有的权限

·resource 是授予开发人员的

eg. grant resource to xiaoming;

4.5 用户管理的综合案例

概述:创建的新用户是没有任何权限的,甚至连登录数据库的权限都没有,需要为其指定相应的权限,给一个用户赋权限使用命令grant,回收权限使用命令revoke

eg.

scott希望收回xiaoming对emp表的查询权限

revoke select on emp from xiaoming

4.5.1.权限的传递

eg.

希望xiaoming用户可以去查询scott的emp表/还希望小明可以把这个权限继续给别人

--如果是对象权限,就加入with grant option

第一步:

SQL>grant selet on emp to xiaoming with grant option;

第二步:

SQL>grant select on scott.emp to xiaohong;

--如果是系统权限

system给xiaoming权限时:如果带了with admin option就说明xiaoming可以把这个权限继续传递下去

SQL>grant connect to xiaoming with admin option 

SQL>grant select on system.emp to xiaohong;

如果scott 把xiaoming 对emp表的查询权限回收,那么xiaohong会怎样?

--xiaohong的权限也被收回,无法继续访问

4.5.2使用profile管理用户口令

概述profile是口令限制,资源限制的命令集合,当建立数据库时,,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那oracle就会将default分配给用户。

(1)账户锁定

概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令

例子:指定tea这个用户最多只能尝试3次登陆,锁定时间2天,让我们看看怎么实现。

sql>create profile lock_account limit

failed_login_attempts 3 password_lock_time 2;

sql>alter user tea profile lock_account;

lock_account :你创建的那个规则的名称

命令解析:

3:代表用户输入错误的次数

2:代表锁定多少天

(2)给账户(用户)解锁

sql>alter user tea account unlock;

(3)终止口令

为了让用户定期修改密码可以使用终止口令的指令来完成。

同样这个命令也需要dba身份来操作。

例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自家的登陆密码,宽限期为2天,看看日志怎么做:

sql>create profile myprofile limit password_life_time 10 password_grace_time 2;
sql>alter user tea profile myprofile

命令解析:

10:表示密码有效期限为10天

2:表示宽限期限为2天

(4)口令历史:

概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息保存到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就会提示用户重新输入密码。

例子:

1)建立profile

sql> create profile password_history limit pasword_life_time 10 password_grace_time 2 password_reuse_time 10

解析:password_reuse_time

//指定口令可重用时间即10天后就可以重用

2)分配给某个用户。

(5)删除profile口令

概述:当不需要某个profile文件时,可以删除该文件

sql>drop profile password_history[cascade]