Oracle笔记之用户管理
1. 创建用户
创建用户使用create user语句,需要DBA权限:
CREATE USER tom IDENTIFIED BY mot;
2. 更改用户密码
修改别人的密码需要DBA权限,或者alter user权限:
ALTER USER tom IDENTIFIED BY newpasswd;
或者修改别人的密码带上用户名:
SQL> PASSWORD tom;
更改 tom 的口令
新口令: ******
重新键入新口令: ******
口令已更改
如果是更改自己的密码的话可以省略掉用户名,注意更改自己密码的时候需要输入旧密码来证明我是我自己:
SQL> PASSWORD
更改 SYS 的口令
旧口令: ******
新口令: ******
重新键入新口令: ******
口令已更改
修改密码的语法跟Linux下修改密码的语法类似,猜想是因为在很久之前大家都是用Linux的,这么设计可能是为了兼容性吧,尽量不去改变用户习惯。
4. 删除用户
删除用户也需要DBA的权限,自己删除自己是不允许的,不能自杀...
DROP USER tom;
如果需要在删除用户的时候删除此用户创建的所有表,那么在用户名后面加上cascade:
DROP USER tom CASCADE;
需要注意如果此用户已经登录到系统中的话是暂时不能删除的,所以不能自杀。
4. 更改用户权限
创建的新用户是没有任何权限的,需要为其指定权限,不指定权限的话连系统都登录不上去。
为一个用户赋予权限使用grant,回收权限使用revoke。
为创建的用户Tom赋予权限使其可以登录:
GRANT connect TO tom;
上面的命令到底是什么意思呢?这个connect实际上是一个预定义角色,上面表示我们把一个叫做connect的角色赋予给了用户tom。
Oracle中权限分为系统权限和对象权限。
系统权限:用户对数据库的相关权限,大概有一百四十多种。
对象权限:用户对其它用户的数据对象操作的权限,大概有二十多种。
因为权限实在太多了,一个用户的权限可能非常非常的多,这个时候我们管理起来就会很崩溃,所以就引入了一个新概念叫做角色,给一个角色初始赋予很多权限,让一个角色表示一个权限的集合,这样子我们再对权限进行管理的时候就多了一个选择,可以将一个角色直接授予一个用户,当用户拥有某种角色的时候就拥有这个角色表示的所有权限。
角色又分为两种,一种是预定义角色,一种是自定义角色。
系统中初始化了一些预定义角色,但是也可能仍然满足不了我们的需求,这个时候就让我们可以自定义角色,来自定义权限集合。
GRANT connect TO tom;
系统权限中有一种叫做create session,拥有这个权限才可以登录到系统,而connect角色包含了create session权限。
特殊的角色:
DBA:可以让一个普通用户变成一个DBA,DBA大概相当于MySQL下的root。
RESOURCE:可以让某个用户建表等一堆乱七八糟的创建(create)相关的权限。
对象权限都是啥:
select
insert
update
delete
all
create index
...
授予一个用户创建表的权限:
GRANT resource TO tom;
希望一个用户Tom可以去查看其它用户Scott创建的表emp,让用户Scott授权给用户Tom相应的对象权限:
GRANT select on emp TO tom;
登录Tom,查询Scott下的emp表:
SELECT * FROM scott.emp;
注意需要使用用户名进行引用,联想到MySQL中使用databaseName.tableName可以跨数据库查询,将一个用户当做一个数据库,引用的时候使用username.tableName进行引用,这样的话使用用户名进行分割,不同的用户名下是可以有相同表名的表的。
上面的如果需要Tom能够把赋予的这个权限继续传递,比如传递给Sam,可以在授权的时候在后面加上with grant option:
GRANT select on emp TO tom WITH GRANT OPTION;
Tom现在也可以把这个权限授予给别人了,而且还可以把权限最大化的传递,让别人也拥有授权权限,使用sys创建一个用户:
CREATE USER sam IDENTIFIED BY toor;
然后让Tom把这个权限授予给Sam:
GRANT select on scott.emp TO sam WITH GRANT OPTION;
注意如果这个时候Scott把赋予Tom的权限收回了的话,Tom授予给其他人的权限仍然是存在的,大概就相当于赵立春书记上任的时候提拔了好些干部,如果他倒台了这些干部也都全给一撸到底回家种地,这样子就没办法管理了,这里不实行连坐。
收回权限的时候只是将grant改为revoke,将to改为from:
REVOKE select on emp FROM tom;
5. 使用profile管理用户口令
profile是口令限制、资源限制的命令,当建立数据库的时候Oracle自动建立名为default的profile,当创建用户的时候没有指定profile的话,那么就意味着使用default的profile。
创建和管理profile需要DBA权限。
创建一个profile,名称为lock_account,用来限制登录时的最大失败尝试次数,锁定的时间单位为天:
CREATE PROFILE lock_account
LIMIT
failed_login_attempts 3
password_lock_time 2;
让Tom使用这个profile:
ALTER USER tom PROFILE lock_account;
当尝试次数超过了之后,账户又会被锁定了,再登录的时候就会提示,即使密码对了也登不上去了:
ERROR:
ORA-28000: the account is locked
账户被锁定的时候可以让DBA来解锁账户:
ALTER USER tom ACCOUNT UNLOCK;
某个用户的账户有异常行为需要冻结掉,DBA手动锁定账户:
ALTER USER scott ACCOUNT LOCK;
限制最大尝试次数可以在一定程度上提高账户的安全性。
为了提高安全性管理员通常会做的一个限制就是限定某个用户的密码每隔多长时间就修改一次,相当于一种"动态密码"了,创建一个profile限定用户必须周期性的改密码,password_life_time表示每隔多少天必须修改密码,password_grace_time表示到期后宽限几天:
CREATE PROFILE circle_passwd
LIMIT
password_life_time 10
password_grace_time 2;
上面的策略表示每隔12天就修改一次密码,在第十一天的时候就开始提醒,一直提醒两天,如果一直不修改密码的话在第十三天账户将被锁定。
我上一份工作的公司配的笔记本每隔几个月就要修改一次密码,因为我们都习惯一直用同一个熟悉的东西,不大想改变习惯嘛,所以我机智的想,如果我在到期的时候将密码随便修改一下再立刻修改回来,不仍然可以使用之前的密码而不被影响吗...哈哈哈,当我机智的这么做的时候我发现我还是太年轻...修改密码的时候有一个策略可以不允许用户使用历史密码,即之后再使用的密码不能与之前的重复,在Oracle的profile也有这个选项,使用password_reuse_time指定口令的可重用时间,比如:
CREATE PROFILE circle_passwd_history
LIMIT
password_life_time 10
password_grace_time 2
password_reuse_time 2;
删除profile:
DROP PROFILE circle_passwd_history;
当profile被删除的时候使用到这个profile的用户也不被约束了。
.
Oracle笔记之用户管理的更多相关文章
- Oracle DB 执行用户管理的备份和恢复
• 说明用户管理的备份和恢复与服务器管理的备份和恢复 之间的差异 • 执行用户管理的数据库完全恢复 • 执行用户管理的数据库不完全恢复 备份和恢复的使用类型 数据库备份和恢复的类型包括: • 用户管理 ...
- oracle工具 sqlplus 用户管理
可以通过system用户对普通用户解锁.alter user scott account unlock; 工具:1/ sqlplusw sqlplus 自带.调用oracle安装目录下bin目录下的e ...
- Linux实战教学笔记14:用户管理初级(下)
第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...
- oracle数据库之用户管理
转载 Oracle创建用户.角色.授权.建表 一.oracle数据库的权限系统分为系统权限与对象权限: 系统权限( database system privilege )可以让用户执行特定的命令集 ...
- Linux实战教学笔记14:用户管理初级(上)
第十四节 用户管理初级(上) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,账号管理 1.1 管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 ...
- Linux实战教学笔记15:用户管理初级(下)
第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...
- linux笔记:用户管理命令和用户组管理命令
用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...
- 吴裕雄--天生自然ORACLE数据库学习笔记:用户管理与权限分配
create user mr identified by mrsoft default tablespace users temporary tablespace temp; create user ...
- Oracle基础和用户管理
1.数据库的使用: 项目的规模:负载量(用户)有多大? 成本: 安全性: (小型数据库)access.forbase 负载小 :100人以内,比如留言板,信息管理系统. 成本:千元以内. 安全性要 ...
随机推荐
- 2nd 历年学生作品评论(3部)
历年学生作品评论(3部) 1.基于GUI的图书管理系统 利用NABCD模型进行竞争性需求分析:http://www.cnblogs.com/chitty/p/4546876.html 测试说明书: h ...
- Python——cmd调用(os.system阻塞处理)(多条命令执行)
os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...
- (七)对Jmeter进行参数化的俩种方式
一.使用CSV Data Set Config: 1.添加CSV Data Set Config: 2.配置参数: Filename:文件名,指保存参数化数据的文件目录,可以相对或者绝对路径. Fil ...
- 微信获取 openid 静默及非静默
<?php /* 需要的微信公众号配置信息 APPID : 绑定支付的APPID APPSECRET : 公众帐号secert */ class Index { // 配置账号信息 privat ...
- MySQL存储引擎InnoDB与Myisam
InnoDB与Myisam的六大区别 InnoDB与Myisam的六大区别 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名 ...
- 【bzoj3064】Tyvj 1518 CPU监控 线段树维护历史最值
题目描述 给你一个序列,支持4种操作:1.查询区间最大值:2.查询区间历史最大值:3.区间加:4.区间赋值. 输入 第一行一个正整数T,表示Bob需要监视CPU的总时间. 然后第二行给出T个数表示在你 ...
- Android四大组件之contentProvider
Activity,Service,broadcast and Contentprovider android 4 大组件. ContentProvider:使用: public class Image ...
- [二]SpringBoot 之 简单的接口
(1)编写一个实体类Demo package me.shijunjie.entity; public class Demo { private long id; private String name ...
- 洛谷 P2015 二叉苹果树
老规矩,先放题面 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端 ...
- 基于ORM实现用户登录
1. 与数据库中的数据进行比较,检验用户名和密码是否正确. 2. 拿到的是QuerySet类型,类似于一个列表.验证成功/失败,返回到不同的页面. u = request.POST.get('user ...