Oracle笔记(十四) 用户管理
SQL语句分为三类:DML、DDL、DCL,之前已经讲解完了DML和DDL,现在就差DCL操作的,DCL主要表示的是数据库的控制语句,控制的就是操作权限,而在DCL之中,主要有两个语法:GRANT、REVOKE;
权限的操作基础是需要有用户的,而这个时候就需要通过一个新的用户进行演示,而要想创建新用户则首先必须是具备管理员权限的sys、system两个用户操作。
范例:创建一个dog用户,密码为wangwang
CONN sys/change_on_install AS SYSDBA;
CREATE USER dog IDENTIFIED BY wangwang;
此时一个新的用户就创建完成了。
注意:“ORA-00988:口令缺失或无效” 错误,这种情况通常发生于创建 Oracle 例程时指定了非正常的全局数据库名称或系统用户密码。请注意全局数据库名称不能以数字开头,口令密码也不能由数字开头。
Oracle对密码的要求如下:
- 系统用户(SYS、SYSTEM)口令长度不能小于7个字符;
- 密码由1 到 30 个字符 (characters)组成;
- 必须以字母开头,不能是符号或者数字;
- 只接受字母,数字,以及三个符号 "#", "_" and "$";
- 密码不能包含像"SELECT","DELETE","CREATE"这类的 Oracle/SQL 关键字;
但是此时这个新创建的用户并不能登录,会提示如下的错误信息:
ORA-01045: user DOG lacks CREATE SESSION privilege; logon denied
提示用户现在没有创建SESSION的权限,在之前曾经解释过,对于sqlplusw而言,每一个用户都表示一个SESSION,如果没有创建SESSION的权限就意味着不能登录,所以下面要授权。
范例:将CREATE SESSION的权限给dog用户
GRANT CREATE SESSION TO dog;
现在新用户登录成功之后,下面就可以执行表的创建操作。
CREATE SEQUENCE myseq;
CREATE TABLE mytab(
id NUMBER PRIMARY KEY,
name VARCHAR2(50)
);
解释:关于数据表的保存问题
在Oracle之中所有的数据表都是保存在硬盘上的,但不是每一张数据表都保存在硬盘上的,而是表空间保存在硬盘上,而数据表保存在表空间之中。
如果把硬盘表示成整个一个图书馆的话,那么表空间就表示每一个书柜,每一张表就表示柜子上的一本书。
范例:将创建表的权限给dog用户
GRANT CREATE TABLE TO dog;
此时只是将数据表的创建权限给了dog用户,但是并没有把表空间的操作权限给dog用户,所以用户仍然无法创建表,因为表没有地方可以保存。
为了解决用户的授权操作,在Oracle之中为用户提供了许多的角色,每一个角色会包含多个权限,而角色主要有两个:CONNECT、RESOURCE;
范例:将CONNECT和RESOURCE TO dog;
GRANT CONNECT,RESOURCE TO dog;
但是现在一旦存在了用户的操作,那么就需要有用户的管理操作,最简单的一个功能,用户有可能丢掉自己的密码。
范例:修改密码
ALTER USER dog IDENTIFIED BY miaomiao;
但是当管理员为一个用户重置一个密码之后,往往会希望用户在第一次登录的时候可以修改密码,所以此时可以通过如下的命令让密码失效:
ALTER USER dog PASSWORD EXPIRE;
也可以控制一个用户的锁定操作:
ALTER USER dog ACCOUNT LOCK; ALTER USER dog ACCOUNT UNLOCK;
以上是针对于一个基本的用户操作,但是在之前也学习过,不同的用户可以访问其他用户的数据表,此时只需要加上完整的“用户名.表名称”即可。
范例:使用dog用户查询scott.emp表
SELECT * FROM scott.emp;
但是现在却无法查找,此时需要将scott用户的权限授予dog用户才可以让dog用户访问scott用户的资源,主要的权限有四个:INSERT、DELETE、UPDATE、SELECT。
范例:将scott.emp表的SELECT和INSERT权限给dog用户
GRANT SELECT,INSERT ON scott.emp TO dog;
既然现在有授权的功能,那么就可以进行权限的回收,权限的回收使用REVOKE指令。
范例:回收dog用户的权限
REVOKE SELECT,INSERT ON scott.emp FROM dog;
REVOKE CONNECT,RESOURCE,CREATE TABLE,CREATE SESSION FROM dog;
既然用户连权限都没了,那么按照中国的一句话:“卷铺盖走人”。
DROP USER dog CASCADE;
以上的所有操作都是由DBA负责。
Oracle笔记(十四) 用户管理的更多相关文章
- Oracle学习(十四):管理用户安全性
--用户(user) SQL> --创建一个名为 grace password是password 的用户,新用户没有不论什么权限 SQL> create user grace identi ...
- Oracle笔记 十四、查询XML操作、操作系统文件
--1.随机数 select dbms_random.value from dual; select mod(dbms_random.random, 10) from dual; --0-9随机数 s ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...
- oracle学习笔记一:用户管理(1)简单的命令
1,打开操作界面 我们在安装好oracle后可以在两个地方打开要操作的界面.请看图一: 或者在运行窗口输入sqlplus.其实这里也是调用了bin下面的sqlplus.exe. 在打开dos命令行窗口 ...
- oracle学习笔记一:用户管理(2)创建删除用户
本文主要介绍如何创建和删除用户,当然里面牵涉很多知识,慢慢道来. 1,创建用户 需求:假设你是oracle管理员,当一个同事入职,你需要分配给一个账号. 创建用户,一般需要有相应权限的用户才可以创建用 ...
- (C/C++学习笔记) 十四. 动态分配
十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...
- 笔记:Linux用户管理(补充)、权限管理、内存管理、网络管理、渗透常用命令
一.用户管理(补充) 添加用户:useradd [选项] 用户名 useradd -u 5000 -g demogroup -G root -d /home/demo -s /bin/bash dem ...
- vue学习笔记—bootstrap+vue用户管理
vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...
- linux技能四 用户管理
用户管理:用户类型,添加用户,修改用户,删除用户,查看用户信息,用户的切换,添加组,修改组,删除组,查看组 用户类型:超级用户:root,UID=1 系统用户:运行系统服务的,不能登陆的,UID=(1 ...
随机推荐
- Go 微服务架构Micro相关概念理解
Micro是一个微服务框架(或者说是工具集):提供了各类组件,解决微服务架构中的不同问题,服务监控.服务发现.熔断机制,负载均衡等等,自己一个个解决这些问题几乎不可能,这时候就需要借助go-micro ...
- Linux操作系统使用RPMBUILD命令打包RPM的详细步骤
首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root身份才能 ...
- 初学django框架 (urls,include子路由,render模板渲染)(一)
一.urls url的使用为了告诉django哪个url调用那一段代码 如上左图所示,后面的test,test1如下图所示,为视图函数,通过前面的路径,调用后面函数的代码: 只有输入正确的url才会在 ...
- 关于macOS上常用操作命令(持续更新)
1.mac上显示/隐藏Finder中的隐藏文件: 显示隐藏文件:在终端中输代码“defaults write com.apple.finder AppleShowAllFiles -boolean t ...
- java中length和length()的区别?
在java中String类可以定义字符串变量和字符串数组,length()用于求String字符串对象的长度,而length用 于求String字符串数组的长度. length()是求String ...
- Bloom Filter布隆过滤器原理和实现(1)
引子 <数学之美>介绍布隆过滤器非常经典: 在日常生活中,包括设计计算机软件时,经常要判断一个元素是否在一个集合中.比如: 在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它 ...
- 使用kubeadm进行单master(single master)和高可用(HA)kubernetes集群部署
kubeadm部署k8s 使用kubeadm进行k8s的部署主要分为以下几个步骤: 环境预装: 主要安装docker.kubeadm等相关工具. 集群部署: 集群部署分为single master(单 ...
- tabs 导航 及内容切换
<!-- 导航头 --> <div class="col-md-6" style="padding: 0px"> <ul id=& ...
- MyBatis配置文件中的标签mappers的子标签mapper的url属性
在浏览器中输入file:/可以打开访达根目录,file:后面至少跟一个杠 MyBatis配置文件中的标签mappers的子标签mapper的url属性中file:后面至少要跟两个杠
- Codeforces Round #590 (Div. 3) Editorial
Codeforces Round #590 (Div. 3) Editorial 题目链接 官方题解 不要因为走得太远,就忘记为什么出发! Problem A 题目大意:商店有n件商品,每件商品有不同 ...