Oracle入门 用户,角色 的安全管理 知识点整理


前言

本文从用户与角色两个方面展开阐述,分别从基础上的增删等进行展开。独自学习的道路上免不了磕磕碰碰,所以总结自己所学内容,望能帮助到别人。内容为自己总结,免不了不妥之处。


提示:以下是本篇文章正文内容,下面案例可供参考

用户

数据库的安全型,需要通过账户管理来保证。

1.1预定义用户

1.1.1管理员用户

(1)SYS
(2)SYSTEM
(3)SYSMAN OEM
(4)DBSNMP

1.1.2实例方案用户

在安装oracle或使用obdc创建数据库时,如果选择了“实例方案”,就会创建出一些用户,在这些
用户对应的schema中,由产生出一些数据库应用实例,这些用户包括HR,BI,OE,PM,IX,SH等。默认情况下,
这些用户均为锁定状态,口令过期。

1.1.3内置用户

有一些Oracle特性或Oracle组件需要自己单独的模式,因此为他们创建了一些内置用户,如APEX_PUBLIC_USER,DIP等。
默认情况下,这些用户都是锁定状态,口令过期。
除了【scoot】和【pubic】两个特殊的用户,scoot用户用于测试网络连接,public实际上是一个用户组,数据库中的任何用户都属于该用户组,如果腰围数据库中的全部用户授予某种权限,只需要对public授权即可。

1.2用户的登录方式

1.2.1密码验证方式:

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

--语法:
create user  【用户名】 identified by 【密码】

1.2.2外部验证方式:

这种验证的密码通常与数据库所在的操作系统的密码一致。

--语法:
create user  【用户名】 identified by 【密码】
or externally as certifiedcate_DN

1.2.3全局验证方式:

不会把验证方式放在Oracle数据库中,也是不常用的验证方式。

--语法:
create user  【用户名】 identified by 【密码】
or globally as directory_DN

1.3用户的基本管理

Oracle用户分为【创建数据库时候系统预定义的用户】和【DBA创建的用户】

1.3.1创建普通用户

新建用户对象、授权(连接数据库、创建表、表空间、查询某用户下的表)**

--语法:
create user  【用户名】 identified by 【密码】
例子 (创建用户:me  密码 me123456): create user me identified by me123456

1.3.2修改用户信息

新建用户对象、授权(连接数据库、创建表、表空间、查询某用户下的表)

--语法:
create user  【用户名】 identified by 【密码】
例子 (创建用户:me  密码 me123456): create user me identified by me123456

更改用户密码

--语法:
更改用户密码: alter user [用户名]  identified by [新密码]
例子:       alert user me identified by  Me123456

1.3.3查询用户信息

查看当前数据库各个用户的属性
通过数据字典 dba_users 查询当前数据库中各个用户的属性。

--语法:
select * from ALL_USERS;

1.3.4删除无用的用户

--语法:
drop user [用户名] cascade;

cascade是关键字,是可选参数。如果要删除的用户中没有任何数据库对象,可以省略。

1.4 用户授权管理

oracle数据库中,用户权限主要分为【系统权限】和【对象权限】两类。

【系统权限】是指数据库中执行某些操作的权限,或者针对某一类对象进行操作的权限。

【对象权限】主要针对数据库对象执行某些操作的权限,如对比哦啊的增删查改等。

查看数据库中的所有系统权限

--语法:
select *from system_privilege_map;

授权系统权限

--语法
grant   all privileges to [用户名] identified  by password|role
with admin option;

解释:

  • all privileges表示设置出select any dictionary权限以外的所有权限;
  • with admin option:表示当前用户可以给其它用户进行系统权限的授予操作。

授予用户创建session的权限,即登陆权限,允许用户登录数据库

--语法:
grant create session to [用户名]

--收回:
revoke create session from [用户名]

注意:

  • 只有DBA用户才有alter database权限;

  • 应用开发者一般需要拥有create table,create view,create index等系统权限;

  • 普通用户一般只需要拥有create session(允许用户登录数据库)权限;

  • 在授权yoghurt是带有with admin option子句,则用户可以获得的权限再授予给其它用户。

授权命令

--语法:
grant connect, resource to 用户名;

授予用户使用表空间的权限

--语法:
grant unlimited tablespace to me;

允许用户连接数据库,并创建数据库对象:

--语法:
grant connect to  me;

授予创建表的权限

--语法:
 grant create table to me;

授予删除表的权限

--语法:
grante drop table to me;

授予插入表的权限

--语法:
grant insert table to me;

授予修改表的权限

--语法:
grant update table to me;

授予所有权限(all)给所有用户(public)

--语法:
grant all to public

oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

允许用户使用数据库中的存储空间:

--语法:
grant resource to me;

允许用户在当前模式中创建序列:

--语法:
grant create sequence to me;

允许某个用户查询指定某个表的记录(不在同一个用户下的表)

--语法:
grant select on [表名] to [用户名]

允许某个用户更新修改某个表的记录

--语法:
grant update on [表名]  to [用户名]

允许某个用户删除某个表的记录

--语法:
grant drop on [表名]  to [用户名]
--收回:
revoke drop on [表名] from [用户名]

允许某个用户插入某个表的记录

--语法:
grant insert on [表名]  to [用户名]

允许用户插入、删除、更新和查询某个的记录

--语法:
grant all on [表名]  to [用户名]

授予me用户alert任意表的权限

--语法:
 grant alert all table to me

授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

--语法:
grant update(id) on tablename to me;

撤回权限

--语法:
revoke connect, resource from 用户名;
例子: revoke connect, resource from me;

角色

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

【用户】是【数据库的使用者】;【角色】是【权限的授予对象】,给用户授予角色,相当于给用户授予一组权限。

数据库中的角色可以授予多个用户,一个也可以被授予多个角色(即用户与角色是【n:n】的关系)。

1.1创建角色

--语法1:角色的验证方式为不需要验证
create  role  [角色名] not identified;
--语法2:密码验证
create  role  [角色名]  identified by [密码];
--语法3:外部验证
create  role  [角色名]  identified by exeternally;
--语法4;全局验证
create  role  [角色名] not identified by globally;

1.2授予角色系统权限

--语法:
grant create session to [用户名];

数据管理员必须拥有【grant_any _privileges】才能给角色赋予任何权限。

将某个角色赋予某个用户

--语法:
grant role to user;

【一个用户可以同时赋予多个角色,被赋予的多个角色是否生效可以自行设置】

lo--语法1:指定某个角色生效
set role [角色名]--语法2:所有角色都生效
set role all;
--语法3:设置except后的角色都不失效
set role all except [用户名];
--语法4:设置的用户都失效
set role none;

1.3查看角色

--语法1:可查看所有角色
select  *from dba_roles;
--语法2:可查看当前用户所拥有的角色
select  *from dba_role_privs
--语法3:可查看当前用户所拥有的角色
select  *from user_role_privs

1.4删除角色

--语法:
drop role [角色名];

猜你喜欢

转载自blog.csdn.net/m0_65559701/article/details/127650906