学习目标:
学习目标:
^ 数据库简介
^ Oracle用户管理
^ Oracle权限角色
1. 数据库简介
1.1 数据库(DataBase)
数据库是一种软件产品,是用于存放数据,管理数据库的存储仓库,是有效组织在一起的数据集合。
1.2常用数据库软件
大型数据库
Oracle oracle是著名Oracle(甲骨文)公司的数据库产品,它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出和数据库结合的第四代语言开发工具的数据库产品。Oracle公司的软件产品丰富,包括Oracle服务器产品,Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新的版本是Oracle11g。
DB2 是IBM的关系型数据库管理系统, DB2有很多不同点版本,可以运行在从掌上产品到大型机不同的终端机器上。 DB2在高端数据库的主要竞争对手是Oracle。
Sybase 是美国Sybase公司研制的一种关系型数据库,是较早采用C/S技术的数据库厂商,是一种典型的 UNIX 或Windows NT 平台上客户机/服务器环境下的大型数据库系统, 在国内大中型系统中具有广泛的应用。
中小型数据库
Sql Server Microsoft SQL Server 是运行在 Windows NT服务器上,支持C/S 结构的数据库管理系统。它采用标准SQL语言。
Mysql 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。在2008年1月16 号被 Sun 公司收购。而2009年 Sun 又被 Oracle 收购。MySQL 体积小、速度快、总体拥有成本低,尤其是开放源码,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
小型数据库
Access Microsoft Office Access(前名 Microsoft Access) 是由微软发布的关联数据库管理系统,是Microsoft Office 的成员之一。
1.3数据库分类(关系型和非关系型数据库)
当前主流的关心型数据库有 Oracle 、DB2 、 Microsoft SQL Server、 Microsoft Access、MySQL等。
非关系型数据库有 NoSql 、MonGOdb。
关系型数据库通过外键关联来建立表与表之间的关系,非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。
1.4 SQL(Structured Query Languge)
SQL(Structured Query Language)语言是用来在关系数据库上执行数据操作、检索及维护所使用的标准语言,是一个综合的、通用的关系数据库语言。大多数数据库都使用相同或相似的语言来操作和维护数据库。
SQL 语言可以用来查询数据、操纵数据、定义数据、控制数据,使软件开发人员、数据库管理人员都可以通过SQL 语言对数据库执行特定的操作。
1.5 DBA
DBA: Database Administrator数据库管理员
1.6 Table (表)
表是数据库存储的基本单元,对应于现实世界中的实体对象,比如部门、职员等,表是一个二维结构,有行和列组成,横向为行(Row),也叫记录(Record),用来表示实体的数据,比如一个职员的相关信息。纵向为列(Column),也叫字段(Filed),用来表示实体的属性,比如职员的薪水。
2. Oracle 用户管理
2.1 sys 和 system 用户
当我们每创建一个数据库实例时,就会自动生成三个用户:
sys用户:超级管理员(群主),权限最大,有creata database 的权限
system 用户:普通管理员用户(普通群管理员),没有create database 的权限
scott 用户:普通用户(普通的群成员)在默认的情况下,scott 用户是锁定状态(lock user),一般我们启用它。如果安装的时候,忘记对scott 用户解锁,比如scott 可以通过system 来对该用户解锁。
解锁步骤:
1、先使用system 登陆,运行sql plus
2、使用命令:alter user scott account unlock
sys 和 system 的主要区别:
地位 | sys:Oracle 的一个超级用户 | system:Oracle 默认的系统管理员,拥有DBA权限 |
作用 | 主要用来维护系统信息和管理实例 | 通常用来管理Oracle数据库的用户、权限和存储等 |
登录身份 | 只能以 SYSDBA 或SYSOPER角色登录 | 只能以Normal 方式登录 |
Normal、sysdba、sysoper 有什么区别:
Normal:是普通用户
Sysdba:拥有最高的系统权限
Sysoper:主要用来启动、关闭数据库
2.2 Oracle后台服务
OracleDBConsoleorcl 网络企业管理器服务
OracleOraDb10g_home1 TNSListener 监听服务(监听端口 1521)(设置成手动)
OracleServiceORCL 数据库实例服务(设置成手动)
2.3 Oracle 开发工具
1)sql plus:工具是oracle自带的工具软件(在开始-->搜索sqlplus)
2)Pl/sql developer: 属于第三方软件,主要用于开发、测试、优化oracle pl/sql 的存储过程比如:触发器,此软件oracle不带,需要单独安装。
- sql*plus 常用命令
1) conn[ect] (可用于切换用户使用)
用法: conn 用户名/密码 网络服务名[as sysdba/sysoper]
当用特权用户身份连接时,必须带上 as sysdba 或 as sysoper
2) disc[onnect]
说明:该命令用来断开与当前数据库的连接,但不退出sql plus 窗口
3)passw[ord]
说明:该命令用于修改用户的密码,如果要想修改其他用户的密码,需要 sys/system
特别说明:如果给自己改密码则可以不用带用户名。如果给别人修改密码需要带用户名(必须是system 或者sys 用户才可以修改)
4) show user
说明:显示当前用户名
5) Exit
说明:该命令会断开与数据库的连接,同时会退出sql plus
- 创建用户
在 oracle中要创建一个新的用户使用 create user 语句,一般是具有dba(数据库管理员)的劝限才能使用。
1)创建用户
命令:create user 用户名 identified by 密码;
2) 给用户修该密码
如果给别人修改密码则需要具有dba的权限,或者是拥有 alter user的系统权限
命令:create user 用户名 identified by 密码;
3)修改自己的密码
如果给自己修改密码可以直接使用
命令: password 用户名
问题: 创建好后的用户名为什么无法登录?
Oracle中用户建立后是无法正常登录的,只有在数据库管理员(DBA)对用户分配相应的权限后,用户才能登录。
- Oracle 用户分配权限和角色
概述: 创建的新用户是没有任何权限的,甚至连登录数据库的权限都没有,需要为其指定相应的权限。
给一个用户赋权限使用命令 grant ,回收权限使用命令 revoke
赋权限基本语法: grant 权限/角色 from 用户名;
回收权限基本语法: revoke 权限/角色 from 用户名;
5.1 分配权限
语法: grant create 权限 to 用户名;
例如: 给小明赋于会话的权限
Sql> grant create session to xiaoming;
5.2 分配角色
也可以按角色对用户分配权限
语法: grant 角色名 to 角色
Sql>grant resource to xiaoming;
5.3 oracle 中权限的概念
权限分为系权限与对象权限
系统权限:是数据库管理员相关的权限:create session(登录权限)、create table(创建表权限)、create idex(创建索引权限)、create view(创建视图权限)、create sequence(创建序列权限)、create trigger(创建触发器权限)
对象权限:是用户操作数据库对象相关的权限。比如对表的增删改查(insert 增、delete 删、update 改、select 查);
5.4 角色
在 oracle中角色分为:预定义角色和自定义角色:
域定义角色:把常用的权限集中起来,形成角色。常见的角色有:dba、connect、resource等;
Connect角色:是授予用户的最基本的权利,能够里连接到oracle 数据库中,并在对其他用户的表有访问权限时,做SELECT、UPDATE、INSERT等操作。Create session--建立会话;Alter session--修改会话;Create view--建立视图;Create sequence--建立序列等权限
Resource角色:具有创建表、序列、视图等权限。Create table--建表;Create trigger--建立触发器;Create procedure--建立过程;Create sequence--建立序列;Create type--建立类型等权限;
Dba角色:是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限。
自定义角色:按需定制一定权限形成角色,可以作为预定义角色的补充。来满足用户的需要。
- 删除用户
概述:一般以dba 的身份去删除某个用户,如果用其他用户去删除用户则需要具有drop user 的权限。
命令:drop user 用户名 [cascade] ;([]可选参数)
在删除用户时,注意:如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;Cascade有级联作用
练习
1、创建用户xiaoming,并赋予connect和resource
创建用户基本语法:create user 用户名 identified by 密码;
Sql>create user xiaoming identified by 123;
给用户授权基本语法:grant 权限/角色 to 用户名;
Sql>grant connect to xiaoming;
Sql>grant resource to xiaoming;
2、切换用户
切换用户基本语法:connect 用户名/密码;
Sql>conn xiaoming/123;
3、xiaoming修改密码
修改密码基本语法:password 用户名;
Sql>password xiaoming;
管理员修改密码基本语法:alter user用户名 identified by 新密码;
(sys 或system 用户修改其他用户的方法)
Sql>alter user xiaoming identified by xiaoming123;
4、使用xiaoming建表
建表基本语法:create table 表名(字段属性);
Sql>create tale users(id number);
5、添加数据
添加数据基本语法:insert into 表名 values(值);
Sql>insert into users values(1);
6、查询数据
查询表内容基本语法:select * from 表名;
Sql>select *from users;
7、删除表
删除表基本语法:drop table 表名;
Sql>drop table users;
8、回收权限(需sys或system用户)
回收权限基本语法:revoke 权限/角色名 from 用户名;
Sql>revoke connect from xiaoming;
Sql>revoke resource from xiaoming;
9、删除用户
删除用户基本语法:drop user 用户名 [cascade];
当我们删除一个用户的时候,如果这个用户自己已经创建过对象,那么我们在删除该用户是,需要加[cascade],表示把这个用户删除的同时,把该用户创建的数据对象一并删除。
Sql>drop user xiaoming;