Oracle 数据库(权限、⽤户、⾓⾊、基本知识介绍)
Oracle数据库推荐以引⽤博客:
本编⽂章内容分布:(1)介绍数据库常见分类(2)关系型数据库概念(3)Oracle数据库基本知识介绍(4)Oracle数据库权限介绍,其中权限的内容涉及范围较⼤,权限在本⽂中和⽤户、⾓⾊练习较为紧密,⾓⾊是权限的集合,属于Oracle对象,创建⽤户需要权限,⽽新创建的⽤户要赋予权限,并且还可以给对象赋予权限。等等这些基本操作都离不开权限,所以在本⽂中主要学习权限!⽤户!⾓⾊!关于⽤户与模式:
⽤户:对数据库的访问,需要以适当⽤户⾝份通过验证,并具有相关权限来完成⼀系列动作.SYS⽤户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象.SYSTEM⽤户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象
模式(schema):是某个⽤户拥有所有对象的集合。具有创建对象权限并创建了对象的⽤户称为拥有某个模式
注意:创建数据库对象(视图,表等)的任⼀⽤户都拥有⼀个以该⽤户名称开头的模式,且被视为模式⽤户
⼀、数据库基本知识
(关系型)数据库相关概念
SQL(Structured Query Language)⼩型数据库:没有安全性 Access 中型数据库:有⼀定的安全性 SQL Server MySQL ⼤型数据库:安全性最⾼ Oracle :性能⾼,市场需求量⼤ DB2 SYSBASE
1
2
3
4
5
6
7
8
9
10
11
12 数据库 Database DB 存储数据的仓库 数据库管理系统 Database Management System DBMS ⽤于管理数据库的软件 负责数据的检索、存储、安全、⼀致性控制等 对已有的数据进⾏处理,得到新的有⽤的数据 关系型数据库 E .F.Codde 关于关系模型的论⽂ 建⽴在关系模型基础上的数据库 拥有⼀组有描述的表格,这些表格的作⽤是装载数据 表格 ⾏:⼀条记录,⼀个实体,具体存在的事物(Java 中的⼀个对象) 列:字段、属性,⽤于描述事物的某⼀个⽅⾯(Java 中对象的属性) 实体集:所有实体的集合 关系:实体间的关系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
三⼤范式(规范):
关于Oracle数据库简单介绍
Oracle数据库相关概念
Oracle服务
数据库的启动和关闭 结构化查询语⾔ 是⼀种语⾔ 是⼀种规范 ANSI SQL-82 SQL-86 SQL-92 SQL-99 所有主流数据库都遵守 关系:有⽅向 1:1 ⼀对⼀ 对于实体集A 中的每个实体,在实体集B 中最多只有⼀个实体与之对应;反之,亦然。 1:n ⼀对多:外键总设在多
⽅ 对于实体集A 中的每个实体,在实体集B 中可以有多个实体与之对应。 n :n 多对多:分解成两个⼀对多,添加⼀个中间表 对于实体集A 中的每个实体,在实体集B 中可以有多个实体与之对应;反之,亦然。 数据库设计:逻辑模型 E-R 图(Entity-Relation 图)
1
2
3
4
5
6
7
8
9
10
11
12
13
1415
16 1.⼀张表必须要有⼀个主键,最好选择与业务⽆关的逻辑主键; 逻辑主键,业务主键 2.外键引⽤主键 逻辑外键 3.不要出现冗余字段 实际开发中,有时候并不遵守,⼀定要冗余,以保证数据的正确性,提⾼查询效率,空间换时间;
1
23
4
5
6
7 1970 Oracle5 最新 Oracle12c 9i 10g ⼩ ⽀持最新的SQL 规范SQL-99 安装要求: 内存:100M+ 正常运⾏所需最⼩内存 (3G+ 电脑不卡) 硬盘:1.5+G
1
2
3
4
5
6
7 数据库:存储数据的仓库,主要指存放数据的⽂件,包括数据⽂件、控制⽂件、数据库⽇志⽂件 数据名:⽤于唯⼀的标识数据库 实例:⼀系列为当前数据库提供服务的内存和后台进程,内存与服务进程的集合称为⼀个实例 实例名/SID/服务名:⽤于唯⼀的标识⼀个实例 实例名与数据库名可以不⼀致
1
2
3
4
5
6 OracleService+SID ,数据库启动的基础服务 OracleOraDb10g_home1TNSListner ,为客户端提供监听服务,提供连接服务 OracleOraDb10g_home1iSQL*Plus ,让客户端可以通过浏览器来对数据库进⾏操作
1
2
3
4
⼆、
监听客户端连接请求,位于服务端的、独⽴运⾏的⼀个后台进程,⼀旦建⽴服务器与客户端的连接,之后客户端与服务的通信不再通过它命令⾏窗⼝ → sqlplus:启动⼀个SQL*Plus客户端⼯具
或 → sqlplus username/password [as sysdba]
或 → sqlplus /nolog:打开SQL*Plus,但不登录
→ conn username/password@192.168.7.58:1521/orcl
→ disconnect 断开连接
spool 命令要写到的⽂件的路径;注意:当使⽤完毕后要使⽤spool off;
conn /as sysdba 操作系统验证
Oracle 登录验证:操作系统、数据库验证、密码⽂件
三、权限
Oracle在刚开始的⼊门知识⽅⾯和mysql在权限⽅⾯有着较⼤的不同,在Oracle中⼏乎所有的操作(创建⽤户、创建表、删除表等等⼀些增删改查在没有获得权限之前是不允许执⾏的)在没有获得权限之前都不能够执⾏,在mysql中则没有那么严格,所以有必要先了解⼀下Oracle中权限的分配。
在创建⽤户之前,可以登录系统管理员权限去创建⼀个⽤户(因为系统管理员有这个权限),下⾯是三种⽤户分类:
在登陆的时候,可以选择下⾯三种登录⽅式:
⽐如创建⼀个⽤户和给创建的⽤户分配权限代码⽰例:(下⾯创建⽤户是在系统管理员的⾝份下创建的,并且系统管理员本⾝也有这个权限,但是如果没有赋予普通⽤户创建⽤户的权限,那么普通⽤户创建⽤户这个操作就会失败。)
3.1、在Oracle 中创建⼀个新⽤户
(⽤户名:zhangsan 密码:zhangsan, 默认登陆是在users表中,并分配10M的空间) 登录⽤户必须是管理员⽤户 启动:startup open 关闭:shutdown immediate Oracle 客户端⼯具 SQL*Plus 三种启动⽅式 第⼀种、开始 → 程序 → Oracle → 应⽤开发⼯具 → SQL*Plus 第⼆种、命令⾏窗⼝ → sqlplus 第三种、浏览器 → ip :5561/isqlplu
s 第四种、本⽅法前提是Oracle ⽂件放在能在linux 终端到的位置,利⽤linux 命令运⾏Oracle 客户端,⼀般情况下都不会运⽤此⽅式来打开Oracle 客户端
SqlDeveloper (linux 系统上修改⽂件的读取权限) 终端 → cd sqldevelper → chmod 777 *.sh → ./sqldeveloper.sh | bash sqldeveloper.sh | sh sqldeveloper.sh
1
2
3
4
5
6
7
8
9
10
11
12
13sys ; //系统管理员,拥有最⾼权限system ;//本地管理员,次⾼权限scott ; //普通⽤户,密码默认为tiger,默认未解锁
1
2
3
4sqlplus / as sysdba ; //登陆sys 帐户sqlplus sys as sysdba ;//同上sqlplus scott/tiger ; //登陆普通⽤户scott
1
2
3
4
下⾯语句可以在sys系统管理员登录的情况下创建的
系统权限: 允许⽤户执⾏特定的数据库动作,如创建表、创建索引、连接实例等
对象权限: 允许⽤户操纵⼀些特定的对象,如读取视图,可更新某些列、执⾏存储过程等
3.2系统权限和对象权限:
(1)系统权限:·先⽤超级管理员连上:sqlplus ·输⼊⽤户名及密码:scott/tiger ·连接成功后,使⽤:conn sys/sysdba as sysdba;登⼊超级管理员后,输⼊如下命令:create user zhangsan identified by zhangsan default tablespace users quota 10M on users 分配权限给新⽤户zhangsan grant create session , create table , create view to zhangsan
1
2
3
4
5
6
7create user ⽤户名 identified by 密码;//在管理员帐户下,创建⽤户alert user scott identified by tiger ;//修改密码
1
2
3grant 权限列表,.. to username [with admin option 同时获得权限分配权];revoke 权限列表,.. from usernam; a.常见的系统权限 CREATE SESSION 创建会话 CREATE SEQUENCE 创建序列 CREATE SYNONYM 创建同名对象 CREATE TABLE
在⽤户模式中创建表 CREATE ANY TABLE 在任何模式中创建表 DROP TABLE 在⽤户模式中删除表 DROP ANY TABLE 在任何模式中删除表 CREATE PROCEDURE 创建存储过程 EXECUTE ANY PROCEDURE 执⾏任何模式的存储过程 CREATE USER 创建⽤户 DROP USER 删除⽤户 b .授予⽤户系统权限 GRANT privilege [, privilege ...] TO user [, user | role , PUBLIC ...] [WITH ADMIN OPTION ]; PUBLIC 所有⽤户 WITH ADMIN OPTION 使⽤户同样具有分配权限的权利,可将此权限授予别⼈ c.使⽤系统权限 --使⽤robinson 具有创建会话、创建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
oracle登录命令17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
SQL> CREATE TABLE tb1 AS SELECT * FROM USER_TABLES; --下⾯提⽰没有权限在users 表空间创建对象 CREATE TABLE tb1 AS SELECT * FROM USER_TABLES ERROR at line 1: ORA-01950: no privileges on tablespace 'USERS' SQL> CONN sys as sysdba; --使⽤sys 帐户登陆并为robinson 在users 表空间指定配额后可以创建表tb1 Enter password: Connected. SQL> ALTER USER robinson QUOTA 10M ON USERS; User altered. SQL> CONN robinson/lion; Connected. SQL> CREATE TABLE tb1 AS SELECT * FROM USER_TABLES; Table created. d.查看系统权限 dba_sys_privs --针对所有⽤户被授予的系统权限 user_sys_privs --针对当前登陆⽤户被授予的系统权限 e.回收系统权限 REVOKE {privilege | role} FROM {user_name | role_name | PUBLIC} --下⾯的⽰例中并没有回收掉原来由scott 授予给robisnon EXECUTE ANY PROCEDURE 的权限 SQL > REVOKE EXECUTE ANY PROCEDURE FROM scott ; Revoke succeeded. SQL> select grantee,privilege,admin_option from dba_sys_privs 2 where grantee in ('SCOTT','ROBINSON') and privilege = 'EXECUTE ANY PROCEDURE' 3 order by grantee; GRANTEE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- ROBINSON EXECUTE ANY PROCEDURE N
O 注意:对于使⽤with admin option 为某个⽤户授予系统权限,那么对于被这个⽤户授予相同权限的所有 ⽤户来说,取消该⽤户的系统权限并不会级联取消这些⽤户的相同权限
4142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论