http://blog.csdn.net/weiwenhp/article/details/8094575

 

很多人都以为oracle可以很容易的改密码,但不能改用户名字.实际上名字也可以改的.只不过改起来有点麻烦.

改用户名的用处

至于改名字的用处嘛,在这样一种情景下非常有用.假如某个公司给每个员工一个账户,用户名就是你的英文名.当某个员工arwen要离职了,那就要删除掉用户arwen了.但是我们知道oracle中用户与此用户下面创建的对象是完全绑定到一起的,而不像sql server中表等对象是可以和用户完全分开.这样的话你一删掉用户arwen那下面的数据全没了.假如我们需要那些数据咋整呢,最容易想到的是把所有数据先导出,然后再导入到某个用户下面.但这样比较麻烦.所以如果能改名字就更好点了.

怎么改用户名

接着用上面的例子.假如又来了新员工,weiwenhp.他是接arwen的班的.所以他很需要用户arwen下面的数据.此时就把用户arwen改成用户weiwenhp.我们登陆数据库时,数据库系统会判断我们的用户名和密码正确不,那我们自然想到这些信息肯定保存在数据库里面哪个地方,肯定会有一个啥保存用户信息的表.没错,所以用户信息保存在表user$中.

select * from user$

用这个sql一查你会看到所有用户名和密码,还有其他一些信息.不过用户名都是加密的.所以即使是管理员也看不到任何用户的密码,只能改用户的密码.

那肯定想,用户名和密码在这那我在这里把名字改下就行了啊.实际上改名就真这么做.

select user#, name from user$ where name = 'ARWEN';     --先瞧下arwen的信息,其中user#就是一个序列号,相当于身份证号吧,假如这里是250

update user$ set name = 'WEIWENHP' where user# = 250;     --于是用户名就改好了啊.当然是update语句就记得再commit提交下啊.

还要做的工作

当上面那样改好名字后你就兴高采烈的想去登陆下试试,瞧瞧改了用户名后真能登陆不.结果一登发现登不了.而用之前的帐户arwen还能登.这时你就傻眼了.这是咋回事啊?

我人知道要是改了密码的话马上就生效能用的啊,改名字了咋就不成了呢.

我们知道数据库中很重要的一点是要保证数据一致性,某个地方的数据更改了,相关的地方也得跟着改才好.那这里肯定是因为登陆时读取的用户信息还没有更新.有数据不一致性的情况出现.你可能会想到有时我们用alter更改一些参数信息得重启数据库才能生效.于是你就想不会我改了名还得重启数据库.这也太恐怖了吧.

实际上不用重启数据库拉,你这样强制更新下.

alter system checkpoint;

alter system flush shared_pool;

你再次登陆就发现可以登陆了啊.而之前的arwen用户就登不了啊.

不过像上面这样改用户名不太方便,估计很少有DBA去这样做吧.因为出现要改用户名的场景确实不多.而且就算要改先导出再导入也能做到.

想干坏事明文显示密码

刚上面你发现用户名和密码都在一个表中,而密码都是加密后的密文,你于是就想我能不能想办法给整成明文.这样就可以瞧见别人密码了,方便干啥坏事啊.于是你就想用改名字相同的做法

update user$ set password = 'abc' where user# = 250;

alter system checkpoin;

alter system flush shared_pool;

select * from user$ where name = 'arwen' -- 此时你发现密码竟然真变成明文了,abc.于是你可乐坏了

于是你迫不及待的想登陆下看真能用不.

结果让你很是沮丧,竟然登不了.而且用户arwen原来的密码也报废了.于是只能乖乖的用alter再来改下.

alter user arwen identified by abc;           --这样改下就能登了.

改成明文后不能登,但改的时候又没报错.不知道oracle背后是咋整的.我觉得嘛按道理应该改表user$中的密码时就应该提示说不能改才比较好呢.

哎不过反正也没哪个管理员真会闲得蛋痛去干把密码明文显示的无聊事吧.所以咋整也无所谓了.

我用的是oracle 11gr1 .不知道早期啥oracle的版本能真的把密码改成明文而又能登陆不.

Oracle怎么更改用户名的更多相关文章

  1. Oracle怎么更改用户名和密码

    通过修改ORACLE基表的方式来修改用户名直接修改底层表USER$更改用户名(该方法在Oracle9i,Oracle10g中测试通过)SQL> UPDATE USER$ SET NAME='TT ...

  2. Oracle 更改用户名

    直接更改系统user$表中的用户名. 查询要更改的用户名 SQL> select user#,name,password from user$ where name ='TICKETS'; US ...

  3. oracle更改用户名

    例如,用户名test1改为test2,在plsql界面中不支持直接更改,只能通过sql更改 1.查询系统user$中的user#值 select user#,name from user$ where ...

  4. SVN更改用户名和密码

    关于SVN更换用户名和密码的问题,SVN是一个脚本的扩展软件,但是通过客户端更改用户名和密码的时候比较弱智,必须要经过一些操作之后才能出现更改用户名和密码的对话框. 主要的步骤就是“点击鼠标右键选择T ...

  5. MySQL5.7更改用户名密码

    更改用户名密码,官方推荐使用alter ALTER USER test@'%' IDENTIFIED BY '; 还有一种 update mysql.user set authentication_s ...

  6. 忘记oracle的sys用户密码怎么修改以及Oracle 11g 默认用户名和密码

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  7. RACLE 错误 12899 处理, oracle 11g 更改字符集

    工作需要,安装装了oracle 11g,在导入其他机器上的备份数据的时间,发生一个错误: IMP-00019: 由于 ORACLE 错误 12899 而拒绝行IMP-00003: 遇到 ORACLE ...

  8. linux更改用户名,域名(转载)

    转自:http://huangro.iteye.com/blog/365975 1. 我们在root权限下,使用命令: usermod -l new_user_name old_user_name 即 ...

  9. 忘记oracle的sys用户密码如何修改以及Oracle 11g 默认用户名和密码

    忘记除SYS.SYSTEM用户之外的用户的登录密码 CONN SYS/PASS_WORD AS SYSDBA; --用SYS (或SYSTEM)用户登录 ALTER USER user_name ID ...

随机推荐

  1. iOS - Responder Chain

     在iOS中,当发生事件响应时,必须知道由谁来响应事件.这就是由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次 ...

  2. 小波变换 C++ opencv 实现

    小波变换 C++ opencv 实现 小波简介: http://www.blogbus.com/shijuanfeng-logs/221293135.html 源码:   /// 小波变换 Mat W ...

  3. windows下DOS命令中查看被占用端口的进程

    今天在用tomcat 运行项目时报错:   java.net.BindException: Address already in use: JVM_Bind这个错误   刚开始有点怀疑是javaw.e ...

  4. [转贴]C编译过程概述

    http://my.oschina.net/apeng/blog/105245 C 编译过程概述 目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是G ...

  5. OA学习笔记-006-SPRING2.5与hibernate3.5整合

    一.为什么要整合 1,管理SessionFactory实例(只需要一个) 2,声明式事务管理 spirng的作用 IOC 管理对象.. AOP 事务管理.. 二.整合步骤 1.整合sessionFac ...

  6. ExecutorService生命周期

    ExecutorService接口继承了Executor接口,定义了一些生命周期的方法 public interface ExecutorService extends Executor { void ...

  7. 【HDOJ】3277 Marriage Match III

    Dinic不同实现的效率果然不同啊. /* 3277 */ #include <iostream> #include <string> #include <map> ...

  8. [LeetCode#157] Read N Characters Given Read4

    Problem: The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is ...

  9. PHP 'ext/soap/php_xml.c'不完整修复多个任意文件泄露漏洞

    漏洞版本: PHP 5.4.1 PHP 5.3.13 PHP 5.3.12 PHP 5.3.11 PHP 5.3.10 PHP 5.3.1 PHP 5.3 漏洞描述: BUGTRAQ ID: 6237 ...

  10. Makefile第四讲:include 引用其它makefile文件

    main.cpp #include "classes/fun.h" int main() { Test::display("Hello makefile"); ...