本章目标 数据库用户管理 数据库权限管理 数据库存储结构 数据库用户管理 1. 创建用户 a) 语法 可以使用 CREATE USER 语句创建用户 语法如下 CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE default_tablespace] [TEMPORARY TABLESPACE
本章目标
数据库用户管理
数据库权限管理
数据库存储结构
数据库用户管理
1. 创建用户
a) 语法
可以使用CREATE USER语句创建用户
语法如下
CREATE USER user_name IDENTIFIED BY password
[DEFAULT TABLESPACE default_tablespace]
[TEMPORARY TABLESPACE temporary_tablespace];
说明
user_name:创建的用户名
password:用户密码
default_tablespace:用户的默认表空间,用于储存数据库对象。如果忽略此参数,则默认存储到SYSTEM表空间
temporary_tablespace:是临时对象默认存储的表空间,包括临时表。如果忽略此参数,则默认存储到SYSTEM表空间
b) 案例
创建jason用户
CREATE USER jason IDENTIFIED BY price;
创建用户,指定默认表空间和临时表空间
CREATE USER henry IDENTIFIED BY hooray
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
2. 给用户授权
a) 如果想让用户在数据库里完成一些任务,需要相应的给用户授予权限
i. 如果想让用户连接到数据库,必须授予用户CREATE SESSION的系统权限。
ii. 授权必须通过一些特殊用户授权(例如SYSTEM),通过GRANT语句来完成
iii. 例如,给用户jason授予CREATE SESSION的权利
GRANT CREATE SESSION TO jason;
b) 下面再创建几个用户,以便后面使用
i. CREATE USER steve IDENTIFIED BY button;
ii. CREATE USER gail IDENTIFIED BY seymour;
iii. GRANT CREATE SESSION TO steve, gail;
3. 修改用户密码
a) 可以使用ALTER USER语句修改用户密码
i. 例如,修改用户jason密码为marcus
ALTER USER jason IDENTIFIED BY marcus;
b) 可以通过PASSWORD命令修改当前登录用户的密码
i. 例如,jason用户登录之后,使用PASSWORD修改密码
CONN jason/marcus
PASSWORD
c) 执行效果如下图所示:
4. 查询用户
a) 在Oracle数据库中,可以通过DBA_USERS查询出包含与用户和用户特征相关的信息
b) DBA_USERS包含用户名、加密的密码、账户状态以及默认的表空间
c) 例如
SELECT username,user_id,password,default_tablespace
FROM dba_users;
d) 查询结果如下图所示:
5. 删除用户
a) 可以使用DROP USER语句对用户进行删除操作
i. 例如,删除jason用户
DROP USER jason;
ii. 执行效果如下图所示:
iii. 注意事项
在删除用户时,如果用户架构包含对象(如,表),那么在删除用户的时候可以在DROP USER语句的用户名后面使用CASCADE关键字进行级联删除。但是需要注意是的是,要确保用户中的这些对象没有其他用户还需要访问。
数据库权限管理
1. 系统权限
a) 拥有相关权限可以运行用户在数据库中完成相关操作,如执行DDL语句。
比如,如果用户需要创建表的话,那么就需要有CREATE TABLE的系统权限。
b) 权限可以组合在一起形成相关不同的角色。两个比较有用的角色是CONNECT和RESOURCE角色
i. CONNECT角色:允许用户连接数据库
ii. RESOURCE角色:允许用户创建相关的数据库对象,如表、序列等
2. 常用系统权限
3. 给用户授权
a) 可以使用GRANT语句给用户授权
例如,给steve用户授予相关系统权限
GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO steve;
执行效果如下图所示:
b) 可以使用WITH ADMIN OPTION选项允许用户将权限授予其他用户,例如,给steve用户授予相关权限并使用此选项
GRANT EXECUTE ANY PROCEDURE
TO steve WITH ADMIN OPTION;
说明
由于使用了WITH ADMIN OPTION,此时steve不仅拥有了EXECUTE ANY PROCEDURE权限,而且还可以将此权限授予其他用户
例如,steve将EXECUTE ANY PROCEDURE权限授予gail
CONNECT steve/button
GRANT EXECUTE ANY PROCEDURE TO gail;
4. 查看给用户授权情况
a) 可以通过user_sys_privs视图查看给用户的授权情况
b) user_sys_privs视图相关列
i. username
当前用户
ii. privilege
用户拥有的权利名称
iii. admin_option
用户是否可以将该权利授予其他用户
c) 登录steve用户,查看其拥有系统权限情况
CONNECT steve/button
SELECT *
FROM user_sys_privs
ORDER BY privilege;
执行效果如下图所示:
5. 撤销系统权限
a) 可以使用REVOKE撤销用户的相关系统权限
b) 例如,撤销steve的CREATE TABLE的权限
REVOKE CREATE TABLE FROM steve;
c) 撤销steve的EXECUTE ANY PROCEDURE权限
REVOKE EXECUTE ANY PROCEDURE FROM steve;
d) 再次查看gail拥有的权限
e) 说明
虽然撤销了steve 的EXECUTE ANY PROCEDURE权限,但是steve之前授予给gail的EXECUTE ANY PROCEDURE权限仍然保留
6. 对象权限
a) 对象权限允许用户执行某些数据库对象操作,如表上执行DML语句
比如,store.products表上的INSERT权限,允许用户对products表进行插入数据的操作
b) 常见对象权限如下所示
7. 将对象权限授予用户
a) 使用GRANT可以将对象权限授予用户
b) 例如,授予steve在products表上的SELECT、INSERT、UPDATE的对象权限和在employees表上的SELECT对象权限
GRANT SELECT, INSERT, UPDATE ON store.products TO steve;
GRANT SELECT ON store.employees TO steve;
c) 授予steve更新last_name列和salary列的权限
GRANT UPDATE (last_name, salary) ON store.employees TO steve;
d) 在授予对象权限给用户的同时,也可以设置允许被授权用户将权限授予其他用户,例如给steve授予customers表的SELECT权限
GRANT SELECT ON store.customers
TO steve WITH GRANT OPTION;
e) steve给gail授予customers表的SELECT权限
CONNECT steve/button
GRANT SELECT ON store.customers TO gail;
8. user_tab_privs_made视图
a) 可以通过user_tab_privs_made视图查看用户授予他人的表权限。视图相关列描述:
grantee:被授权者
table_name:表名
grantor:授权者
privilege:对象权限名称
grantable:被授权者是否能给其他用户授予该权限
hierarchy:该权限是否形成层次关系
b) 例如
SELECT *
FROM user_tab_privs_made
WHERE table_name = 'PRODUCTS';
c) 执行效果如下图所示:
9. user_col_privs_made视图
a) 可以通过user_col_privs_made视图查看用户授予他人的列权限。视图相关列如下
grantee:被授权者
table_name:表名
column_name:列名
grantor:授权者
privilege:权限名
grantable:被授权者是否能够给其他用户授予该权限
b) 例如
SELECT *
FROM user_col_privs_made;
c) 执行效果如下图所示:
10. user_tab_privs_recd视图
a) 可以通过user_tab_privs_recd视图查看用户获得的表权限。视图相关列如下
owner:对象的拥有者
table_name:被授权的对象名
grantor:授权者
privilege:对象权限名
grantable:是否允许该权限拥有者给其他用户授予此权限
hierarchy:该权限是否形成层次关系
b) 例如
CONNECT steve/button
SELECT *
FROM user_tab_privs_recd
ORDER BY privilege;
c) 执行效果如下图所示:
11. user_col_privs_recd视图
a) 可以通过user_col_privs_recd视图查看用户获得的列权限。视图相关列如下
owner:拥有该对象的用户
table_name:权限所在的表名
column_name:权限所在的列名
grantor:授权者
privilege:权限名
grantable:该权限的拥有者是否能给其他用户授予该权限
b) 例如
CONN steve/button
SELECT *
FROM user_col_privs_recd;
c) 执行效果如下图所示
12. 撤销对象权限
a) 使用REVOKE撤销对象权限
i. 例如,撤销steve用户在products表上的INSERT权限
CONNECT store/password
REVOKE INSERT ON products FROM steve;
ii. 执行效果如下图所示:
iii. 撤销steve用户对于customers表的SELECT权限
REVOKE SELECT ON store.customers FROM steve;
iv. 说明
当撤销steve用户对customers表上的SELECT权限,那么之前steve授予gail的该权限也被撤销
数据库存储结构
1. 数据库存储结构概念
a) 数据库存储结构包括两部分
i. 逻辑存储结构
Oracle数据库的逻辑部分包括表空间(tablespace)、方案(schema)对象、段(segment)、区间(extent)和数据块(data block)等。数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段组成,段由区组成,区由数据块组成。
ii. 物理存储结构
Oracle数据库中的数据最终是保存在物理文件中的,包括用户数据、系统管理数据和日志数据等。每个物理文件由数据块组成,主要包括数据文件、控制文件和日志文件三类文件。这些文件为数据提供真正的物理存储。
2. 逻辑存储结构
3. 物理存储结构
4. 表空间
a) 数据库可以分为若干个逻辑存储单元,这些存储单元被称为表空间。
i. 每个数据库都至少有一个系统表空间(SYSTEM表空间)。
ii. 创建表时,需要定义保存表的表空间。
b) Oracle的表空间
i. 大文件表空间
大文件表空间可以包含一个单独的大文件,是为超大数据库设计的,使用大数据文件可以减少文件的数量,从而减少更新时间
ii. SYSTEM表空间
每个Oracle数据库都包含一个SYSTEM表空间,当数据库创建时,SYSTEM表空间会自动创建。
当数据库打开时,SYSTEM表空间始终在线。
SYSTEM表空间包含整个数据库的数据字典还有一些PL/SQL程序单元
iii. SYSAUX表空间
数据库组件将SYSAUX表空间作为存储数据的默认位值,因此当数据库创建或升级时,SYSAUX表空间会自动创建。SYSAUX表空间不允许被删除,也不允许对其进行改名操作
iv. Undo表空间
每个数据库都可以包含多个undo表空间。在自动撤销各类模式中,每个Oracle实例都指定(且只有一个)undo表空间。撤销的数据在undo表空间中使用undo区间来管理
v. 临时表空间
临时表空间用于存储临时数据,例如SQL语句执行排序操作时会创建临时数据。当数据库创建时将得到一个临时表空间。TEMP表空间是默认的临时表空间
5. 在SQL*Plus中查看表空间信息
a) 使用SYS以SYSDBA的身份登录SQL*Plus,视图V$TABLESPACE可以显示控制文件中的表空间信息
SELECT *
FROM v$tablespace;
查询结果如下图所示:
b) 也可以访问视图DBA_TABLESPACE,获取并显示所有表空间的属性和在线状态信息
SELECT TABLESPACE_NAME,CONTENTS,STATUS
FROM DBA_TABLESPACES;
查询结果如下图所示:
6. 表空间状态
a) 可以读写状态
用户可以读写表空间
b) 只读状态
用户只能读取表空间数据,不能写入。当用户不希望对数据库修改时可以设置为只读状态
c) 脱机状态
在此状态下,用户不能访问。这种状态用于控制表空间维护或要恢复与表空间对应的数据文件
7. 修改表空间的状态
a) 可以使用ALTER TABLESPACE命令修改表空间的状态,语法如下
ALTER TABLESPACE
例如,将表空间EXAMPLE设置为脱机状态
ALTER TABLESPACE example OFFLINE;
通过视图查看表空间的状态
b) 可以使用以下命令把表空间EXAMPLE设置为不同的状态
设置为在线状态ONLINE
ALTER TABLESPACE example ONLINE;
设置为只读状态READ ONLY
ALTER TABLESPACE example READ ONLY;
设置为读写状态READ WRITE
ALTER TABLESPACE example READ WRITE;
c) 系统表空间、撤销表空间和临时表空间不能被设置为脱机状态。
8. 创建表空间
a) 创建表空间的语法如下
CREATE TABLESPACE tablespacename
DATAFILE 'filenane' [SIZE integer [K|M]]
[AUTOEXTEND [OFF|ON]]
b) 说明
tablespacename:需要创建表空间的名称
DATAFILE:指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔
filenane:是表空间中数据文件的路径和名称
SIZE:用来指定文件的大小,用K表是千字节大小,M表示兆字节大小
AUTOEXTEND:用来启用或禁用数据文件的自动扩展
c) 案例
i. 创建名称为STORE的表空间
CREATE TABLESPACE STORE
DATAFILE 'D:\ORACLE11G\STORE.MDB' SIZE 5M;
9. 删除表空间
a) 使用DROP TABLESPACE语句删除表空间
DROP TABLESPACE
b) 例如,删除store表空间
DROP TABLESPACE store
INCLUDING CONTENTS AND DATAFILES;
本章总结
数据库用户管理
数据库权限管理
数据库存储结构
![]() |
![]() ![]() |
@Wentasy |

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

记事本++7.3.1
好用且免费的代码编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。