热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

用户管理与权限分配5.20

1、方案与用户方案是一些数据库对象(如:表、索引、视图、序列、过程、函数、触发器等)的集合,一个方案下的对象归一个用户所有。在Oracle中方案和用户基本是一个等同的概念,用户名即方案名。当访问数据库对象时,需要注意如下一些事项:(1)同一方案

1、方案与用户 方案是一些数据库对象(如:表、索引、视图、序列、过程、函数、触发器等)的集合,一个方案下的对象归一个用户所有。在Oracle中方案和用户基本是一个等同的概念,用户名即方案名。 当访问数据库对象时,需要注意如下一些事项: (1) 同一方案

1、方案与用户

方案是一些数据库对象(如:表、索引、视图、序列、过程、函数、触发器等)的集合,一个方案下的对象归一个用户所有。在Oracle中方案和用户基本是一个等同的概念,用户名即方案名。

当访问数据库对象时,需要注意如下一些事项:

(1) 同一方案中不能存在同名对象,但是不同方案中数据库对象可以重名。

(2) 用户可以直接访问自己方案中的数据对象,但如果要访问其他方案的数据对象,则必须具有对该对象的相应访问权限。

(3) 当用户要访问其他方案的对象时,必须附加方案名作为前缀。

2、创建用户

2 语法

Createuser 用户名 identified by 密码

[defaulttablespace 表空间名1]

[temporarytablespace表空间名2]

[quota[integer k|m] |[unlimited] on tablespace表空间名1]

[account lock| account unlock]

2 参数说明

l 用户名和密码:一般为字母、数字、“#”、“_”符号。

l default tablespace:表示该用户在创建数据对象时使用的默认表空间。

l temporary tablespace:表示该用户使用的临时表空间。

l quota integer k|m ontablespace:表示该用户在指定的表空间中允许占用的最大空间。

l quota unlimited ontablespace:表示该用户在指定的表空间中可以占用的空间大小没有上限。

l account lock:表示该用户被锁定。默认情况是account unlock。

2 举例:

(1) 创建一个user1用户,口令为123,并设置默认表空间为users,临时表空间为temp。

SQL> conn /as sysdba

SQL> createuser user1 identified by 123 default tablespace users temporarytablespace temp;

(2) 创建一个user2用户,口令为123,并设置默认表空间为users且最多可使用大小为1m,临时表空间为temp且不限制其大小,user2用户创建时被锁定。

SQL> createuser user2 identified by 123 default tablespace users temporarytablespace temp quota 1m on users accountlock;

2 说明:

(1) 如果建立用户时不指定defaulttablespace子句,Oracle会将SYSTEM表空间作为用户默认表空间。

(2) 如果建立用户时不指定temporarytablespace子句,Oracle会将数据库临时表空间作为用户临时表空间。

(3) 初始建立的用户没有任何权限,不能执行任何数据库操作,所以为了使用户可以连接到数据库,必须授权其create session 权限。

SQL> conn user1/123 --是否能登陆?

SQL> conn / as sysdba

SQL> grant createsession to user1;

(4) 如果建立用户时没有为表空间指定quota子句,那么用户在特定表空间上的配额为0,用户将不能在相应的表空间上建立数据对象。

SQL> connuser1/123 --是否能登陆?

SQL> createtable S(sno char(2)); --是否能建表?

SQL> conn /as sysdba

SQL> grantcreate table to user1;

SQL> connuser1/123

SQL> create table S(snochar(2)); --是否能建表?

SQL> insert into Svalues('11'); --是否能插入数据?

3、修改用户

管理员对以创建的用户进行修改,包括:修改用户口令,改变用户默认表空间、临时表空间、磁盘配额等。

2 语法

Alter user 用户名identified by 密码

[default tablespace 表空间名1]

[temporary tablespace表空间名2]

[quota [integer k|m]|[unlimited] on tablespace表空间名1]

[account lock| accountunlock]

2 举例:

(1) 修改用户的磁盘限额

SQL> conn /as sysdba

SQL> alter user user1quota 1m on users;

SQL> connuser1/123

SQL> insert into Svalues('11'); --是否能插入数据?

SQL> conn / as sysdba

SQL> create tableuser1.tj as select * from dba_objects where 1=2;

SQL> insert intouser1.tj select * from dba_objects;

(2) 修改用户口令

SQL> conn /as sysdba

SQL> alteruser user1 identified by 321;

SQL> connuser1/123

SQL> connuser1/321

(3) 锁定或解锁被锁定的用户

SQL> conn /as sysdba

SQL> grant createsession to user2;

SQL> conn user2/123 --是否能登陆?

SQL> conn / as sysdba

SQL> alter user user2account unlock;

SQL> connuser2/123 --是否能登陆?

SQL> conn / as sysdba

SQL> alter user user2account lock;

SQL> connuser2/123 --是否能登陆?

4、删除用户

2 语法

Drop user 用户名[cascade];

2 说明:如果用户拥有数据库对象,则删除用户时必须加cascade选项,此时连同该用户所拥有的对象一起删除。

2 举例

SQL> conn / as sysdba

SQL> drop user user2; --是否能删除用户user2?

SQL> drop user user1; --是否能删除用户user1?

SQL> conn user1/321

SQL> drop table S;

SQL> conn / as sysdba

SQL> drop useruser1; --是否能删除用户user1?

SQL> conn /as sysdba

SQL> createuser user1 identified by 123 default tablespace users temporarytablespace temp;

SQL> grant createsession to user1;

SQL> grantcreate table to user1;

SQL> connuser1/123

SQL> create table S(snochar(2));

SQL> conn /as sysdba

SQL> drop user user1cascade; --是否能删除用户user1?

5、用户权限管理

2 权限介绍

权限是指执行特定类型sql命令或是访问其它方案对象的权利。Oracle数据库中将权限分为两大类:系统权限和对象权限。如果要执行某种特定的数据库操作,则必须为用户授予系统权限;如果用户要访问其他方案的对象,则必须为用户授予对象的权限。

2 系统权限

系统权限指对数据库管理的操作以及对数据对象的操作(创建、修改、删除),其中sysdba和sysoper就是其中的两种。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。

Oracle11g中含有200多种系统特权,所有的这些系统特权均被列举在SYSTEM_PRIVILEGE_MAP数据目录视图中。

常用的系统权限有:createsession create table create view create procedure

Create public synonym 建同义词 create trigger create cluster 建簇

2 显示系统权限

SQL> select * fromsystem_privilege_map order by name;

--显示所有系统权限,oracle 11g有208种。

2 授予系统权限

(1) 一般情况,授予系统权限是由DBA完成的。

(2) 如果用其他用户授予系统权限,则要求该用户必须具有grant any privilege的系统权限。

(3) 可以带有with admin option选项,这样被授予权限的用户或角色还可以将该系统权限授予其它用户或角色。

2 举例

(1) 创建两个用户ken, dell和tom,并指定密码。初始阶段它们没有任何权限。

Create user ken identified by ken;

Create user dell identified by dell;

Create user tom identified by tom;

(2) 给ken和dell授予createsession和create table权限时带with admin option;授予createview时不带with admin option。

Grant create session, create table token, dell with admin option;

Grant create view to ken;

(3) 通过ken给tom授权。

Grant create session, create table totom;

2 回收系统权限

(1) 一般情况下,回收系统权限是DBA完成的。

(2) 如果其它用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。Ken、dell都可以回收tom的权利。

(3) 注意:系统权限级联收回的问题-----不是级联回收。

Revoke create session from ken; --tom仍可以连接

2 对象权限介绍

对象权限指对数据对象的操作(select,update,insert,delete)

(1) 指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。

(2) 常用的有 alter delete select insert update index

references引用

execute执行:如果用户想要执行其它方案的包/过程/函数,则须有execute权限。

(3) Selectdistinct privilege from dba_tab_privs; --dba查看oracle提供的所有的对象权限

2 授予对象权限

(1) 在oracle9i前,授予对象权限是由对象的所有者来完成的,如果用其它用户来操作,则需要用户具有相应的(with grant option)权限。

(2) 从oracle9i开始,sys和system可以将任何对象上的对象权限授予其它用户。

2 回收对象权限——级联回收

2 查询用户与权限

用户被授予的系统权限和对象权限都被记录在Oracle数据字典中,了解某个用户被授予哪些系统权限和对象权限是确保应用系统安全的重要工作。Oracle 11g用于存放用户、系统权限、对象权限有关的数据字典如下:

数据字典表

说明

DBA_USERS

存储数据库用户基本信息表

DBA_SYS_PRIVS

存储用户或角色的系统权限

DBA_TAB_PRIVS

存储用户的对象权限

USER_SYS_PRIVS

存储登陆用户的系统权限

ROLE_SYS_PRIVS

存储登陆用户的角色信息

ALL_TABLES

存储登陆用户可以查询的基本表信息

USER_TAB_PRIVS

存储登陆用户将哪些基本表权限授予哪些用户的信息

ALL_TAB_PRIVS

表示对象上的授权,用户是PUBLIC或被授予者或用户是属主

2 举例

select *from dba_role_privs where grantee='SCOTT'; --查询scott所拥有的角色

select * from dba_tab_privswhere grantee='DBA'; --一个角色包含的对象权限

6、角色管理

2 角色介绍

角色就是相关权限的命令集合。使用角色的主要目的就是为了简化权限的管理。包括:预定义角色和自定义角色。

2 预定义角色

预定义角色是指oracle所提供的角色,每种角色都用于执行一些特定的管理任务。常用的预定义角色connect,resource,dba。

--查询oracle中所有的角色(一般是DBA查看)

Select * from dba_roles;

其中,resource角色隐含了unlimited tablespace系统权限,即用户可以无限制的使用表空间。DBA角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system,但是dba角色不具备启动和关闭数据库的权限。

2 自定义角色

一般是由具有DBA角色的用户来建立,如果用别的用户来建立,则需要具有create role的系统权限。在建立角色时可以指定验证方式(不验证,数据库验证等)。

2 建立角色(不验证)

如果角色是公用的角色,可以采用不验证的方式建立角色。

Create role 角色名not identified;

2 建立角色(数据库验证)

采用这样的方式时,角色名、口令存放在数据库中。当激活该角色时,必须提供口令,在建立这种角色时,需要为其提供口令。

Create role 角色名identified by 口令

2 举例

Conn / as sysdba

Create role r1;

Create role r2 identified by r2;

Create role r3 identified by r3;

Create user u1 identified by u1;

Grant connect to r1;

Grant select on scott.emp to r2;

Grant insert on scott.emp to r3;

Grant r1, r2, r3 to u1;

Conn u1/u1

Select * from session_roles; --查看当前用户所有生效的角色

Set role r2 identified by r2,r3identified by r3; --使带有口令的角色生效

Select * from scott.emp;

Set role none; --使所有角色失效

Select * from session_roles;

2 补充:

以sys用户登陆Oracle,执行select * fromV_$PWFILE_USERS;可查询到具有sysdba权限的用户,如:

SQL> select * from V_$PWFILE_USERS;

USERNAME SYSDBA SYSOPER

SYS TRUE TRUE

sysdba拥有最高的系统权限,登陆后是 sys

sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是public

sysdba和sysoper属于systemprivilege,也称为administrative privilege,拥有例如数据库开启关闭之类一些系统管理级别的权限sysdba和sysoper具体的权限可以看下表:

系统权限

sysdba

sysoper

区别

Startup(启动数据库)

startup

Shutdown(关闭数据库)

shutdown

alter database open/mount/backup

alter database open/mount/backup

改变字符集

none

create database(创建数据库)

None不能创建数据库

drop database(删除数据库)

none

create spfile

create spfile

alter database archivelog(归档日志)

alter database archivelog

alter database recover(恢复数据库)

只能完全恢复,不能执行不完全恢复

拥有restricted session(会话限制)权限

拥有restricted session权限

可以让用户作为sys用户连接

可以进行一些基本的操作,但不能查看用户数据

登录之后用户是sys

登录之后用户是public

节日快乐。。。



推荐阅读
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
  • CAS 机制下的无锁队列设计与实现 ... [详细]
  • 通过以下步骤可以确定SharePoint网站集对应的W3WP进程及其运行状态:首先,打开命令提示符(CMD),然后输入 `iisapp` 命令,该命令将列出当前IIS中所有Web应用程序及其对应的w3wp.exe进程。此外,还可以使用任务管理器或PowerShell脚本来进一步检查这些进程的详细信息和运行状态,以确保网站集的正常运行。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 在处理大图片时,PHP 常常会遇到内存溢出的问题。为了避免这种情况,建议避免使用 `setImageBitmap`、`setImageResource` 或 `BitmapFactory.decodeResource` 等方法直接加载大图。这些函数在处理大图片时会消耗大量内存,导致应用崩溃。推荐采用分块处理、图像压缩和缓存机制等策略,以优化内存使用并提高处理效率。此外,可以考虑使用第三方库如 ImageMagick 或 GD 库来处理大图片,这些库提供了更高效的内存管理和图像处理功能。 ... [详细]
  • 仓储设施布局设计的核心原则与实施策略,你了解多少? ... [详细]
  • 12月28日安全动态:恶意软件悄然侵入Windows系统 ... [详细]
  • 手机号码归属地查询服务由 WebXml.com.cn 提供,通过其 WEB 服务接口(http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx)实现。该服务能够准确解析国内手机号码的归属地信息,适用于多种应用场景,如用户身份验证、市场分析等。 ... [详细]
  • 为了向用户提供虚拟应用程序,通常会在基础架构中部署StoreFront或Web Interface。为了确保安全的远程访问,通常需要在DMZ中配置Secure Gateway或Access Gateway。本文详细对比了这两种界面工具的功能特性,包括用户管理、安全性、性能优化等方面,为企业选择合适的解决方案提供了全面的参考。 ... [详细]
  • 夸克网盘电脑版上线,实现三端同步备份与高效编辑播放功能 ... [详细]
  • 掌握Linux Shell核心概念与基础技能,本文详细介绍了文件系统和安全管理中的`chmod`命令。`chmod`命令支持两种模式:符号模式和绝对模式。符号模式使用`ugo`表示用户类别,`rwx`表示权限类型;而绝对模式则通过八进制数值来精确设置不同用户的权限。此外,文章还探讨了其他重要的Shell命令和技巧,帮助读者全面理解和应用Linux环境下的文件管理和安全控制。 ... [详细]
  • Hired网站最新发布的开发者调查显示,Python 语言继续受到开发者的广泛欢迎,而 PHP 则被评为最不受欢迎的语言。该报告基于 Hired 数据科学团队对 13 个城市中 9800 名开发者的调查数据,深入分析了当前编程语言的使用趋势和开发者偏好。此外,报告还探讨了其他热门语言如 JavaScript 和 Java 的表现,并提供了对技术招聘市场的洞见。 ... [详细]
  • 顶点项目:探讨辅导员与学生之间的互动关系及其影响。本研究深入分析了辅导员与学生之间的互动模式,发现学生普遍希望与辅导员建立平等和谐的关系,避免不必要的对立。通过积极的学习态度和沟通,学生能够更好地与辅导员合作,共同促进个人成长与发展。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
author-avatar
aaa521125aaa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有