文章目录
前言
本文从用户与角色两个方面展开阐述,分别从基础上的增删等进行展开。独自学习的道路上免不了磕磕碰碰,所以总结自己所学内容,望能帮助到别人。内容为自己总结,免不了不妥之处。
提示:以下是本篇文章正文内容,下面案例可供参考
用户
数据库的安全型,需要通过账户管理来保证。
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 [角色名];