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小时内删除。