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笔记之用户管理的更多相关文章

  1. Oracle DB 执行用户管理的备份和恢复

    • 说明用户管理的备份和恢复与服务器管理的备份和恢复 之间的差异 • 执行用户管理的数据库完全恢复 • 执行用户管理的数据库不完全恢复 备份和恢复的使用类型 数据库备份和恢复的类型包括: • 用户管理 ...

  2. oracle工具 sqlplus 用户管理

    可以通过system用户对普通用户解锁.alter user scott account unlock; 工具:1/ sqlplusw sqlplus 自带.调用oracle安装目录下bin目录下的e ...

  3. Linux实战教学笔记14:用户管理初级(下)

    第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...

  4. oracle数据库之用户管理

    转载 Oracle创建用户.角色.授权.建表   一.oracle数据库的权限系统分为系统权限与对象权限: 系统权限( database system privilege )可以让用户执行特定的命令集 ...

  5. Linux实战教学笔记14:用户管理初级(上)

    第十四节 用户管理初级(上) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,账号管理 1.1 管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 ...

  6. Linux实战教学笔记15:用户管理初级(下)

    第十四节 用户管理初级(下) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,用户查询相关命令id,finger,users,w,who,last,lastlog,gr ...

  7. linux笔记:用户管理命令和用户组管理命令

    用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...

  8. 吴裕雄--天生自然ORACLE数据库学习笔记:用户管理与权限分配

    create user mr identified by mrsoft default tablespace users temporary tablespace temp; create user ...

  9. Oracle基础和用户管理

    1.数据库的使用: 项目的规模:负载量(用户)有多大? 成本: 安全性:   (小型数据库)access.forbase 负载小 :100人以内,比如留言板,信息管理系统. 成本:千元以内. 安全性要 ...

随机推荐

  1. Ansible基础配置与常用模块使用

    环境介绍: Ansible服务端IP:192.168.2.215 Ansible客户端IP:192.168.2.216.192.168.2.218.192.168.2.113   一.创建Ansibl ...

  2. The goal you specified requires a project to execute but there is no POM in this directory

    [INFO] Scanning for projects... [INFO] ------------------------------------------------------------- ...

  3. [学习]WireShark 的过滤功能

    1. 打开 wireShark 过滤显示 协议 比如显示arp协议 过滤栏输入arp即可 支持的协议类型 TCP UDP HTTP FTP ICMP SMTP等等 2. 过滤ip地址 ip.addr ...

  4. apache 部署web.py

    一.安装Mod_wsgi 1.先yum -y install httpd-devel,否则会提示没有apxs 2.如果在make时 wsgi报错apxs:Error: Command failed w ...

  5. vue shorthands

    vue shorthands : & @ https://vuejs.org/v2/guide/syntax.html#Shorthands v-for https://vuejs.org/v ...

  6. [BinaryTree] 二叉树常考知识点

    1.二叉树第i层至多有2^(i-1)个结点(i>=1). 2.深度为k的二叉树上,至多含2^k-1个结点(k>=1) 3.n0 = n2 + 1(度) 4.满二叉树:深度为k且含有2^k- ...

  7. Oracle schema 的含义

    方案(Schema)为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,sc ...

  8. BPSK相干解调和DBPSK非相干解调误码率仿真

    BPSK相干解调和DBPSK非相干解调误码率仿真 本脚本完成了BPSK和DBPSK两种不同调制方式下的误码率(DBPSK差分相干)仿真, 并和理论曲线进行了对比. 撰写人:*** 最后修改日期:201 ...

  9. SPAMS:稀疏建模工具箱

    https://chunqiu.blog.ustc.edu.cn/?p=570 http://spams-devel.gforge.inria.fr/index.html 在一篇显著性检测文章:Sal ...

  10. 【二】shiro入门 之 身份验证

    大体步骤如下: 1.首先通过new IniSecurityManagerFactory 并指定一个ini 配置文件来创建一个SecurityManager工厂: 2.接着获取SecurityManag ...