签到成功

知道了

CNDBA社区CNDBA社区

Oracle 通过密文密码创建同名用户 操作示例

2024-02-02 16:29 176 0 原创 Oracle 19c
作者: dave

在迁移数据库的时候,如果不知道旧用户的密码,可以通过密文密码来创建用户。 http://www.cndba.cn/dave/article/131509

1 创建测试用户

SQL> create user dave identified by cndba;
User created.

SQL> grant connect,resource to dave;
Grant succeeded.

SQL> col name for a20
SQL> col password for a50
SQL> set lines 160
SQL>  select user#,name,password from user$ where name='DAVE';
     USER# NAME                 PASSWORD
---------- --------------- --------------------------
        90 DAVE                 6031FF6608F9922F

2 使用密码创建同密码用户

SQL> create user cndba identified by values '6031FF6608F9922F';
User created.

SQL> grant connect,resource to cndba;
Grant succeeded.

SQL> grant connect, resource to dave2 identified by values '6031FF6608F9922F';
Grant succeeded.

SQL>  col name for a20
SQL>  col password for a50
SQL> set lines 160
SQL> select user#,name,password from user$ where name in ('DAVE','DAVE2','CNDBA');

     USER# NAME            PASSWORD
---------- --------------- ----------------------------------------
        91 CNDBA           6031FF6608F9922F
        90 DAVE            6031FF6608F9922F
        92 DAVE2           6031FF6608F9922F

我们这里先验证,会发现一个问题:

http://www.cndba.cn/dave/article/131509

SQL> conn dave/cndba
Connected.

SQL> conn CNDBA/cndba
ERROR:
ORA-01017: invalid username/password; logon denied

SQL> conn dave2/cndba
ERROR:
ORA-01017: invalid username/password; logon denied

三个用户的密码密文一样,但是后面新建的 2 个缺无法登录。 这里就是需要注意的部分,Oracle 用户的密文密码是和用户相关联的,只有用户名和密码匹配的情况下,这个密文密码才能使用,简单的说,就是这个密码只属于对应的用户,其他用户使用这个密码就会提示密码不正确。

两个不同的用户即使密码相同,它们的密文密码并不相同。验证如下:http://www.cndba.cn/dave/article/131509

SQL> create user u1 identified by dave;
User created.
SQL> create user u2 identified by dave;
User created.

SQL> col name for a20
SQL> col password for a30
SQL> set lines 160
SQL> select user#,name,password from user$ where name in ('U1','U2');

     USER# NAME                 PASSWORD
---------- -------------------- ------------------------------
        93 U1                   91229A968EED9624
        94 U2                   E7F5CD5EF910E6D6

可以看到,密码确实不一样。

因为我们这里使用密文密码的方式只能在新的,同版本的数据库上创建同名的用户。 http://www.cndba.cn/dave/article/131509

我们这里直接删除用户在创建来验证:

http://www.cndba.cn/dave/article/131509
http://www.cndba.cn/dave/article/131509
http://www.cndba.cn/dave/article/131509

SQL> drop user dave;

User dropped.

SQL> create user dave identified by values '6031FF6608F9922F';

User created.

SQL>  grant connect,resource to dave;

Grant succeeded.

SQL> conn dave/cndba
Connected.

上面强调版本,是因为 Oracle 在不同的版本里对数据库的加密算法不一样:http://www.cndba.cn/dave/article/131509http://www.cndba.cn/dave/article/131509

  1. 10g中使用基于DES的版本,
  2. 11g中,它使用基于SHA1密码的版本,从11g第1版开始的区分大小写的密码,
  3. 12c中使用基于SHA-2的SHA-512密码版本,对用户密码哈希进行了改进。通过使用基于PBKDF2的SHA512哈希算法,替代过去简单的SHA1哈希加密,使得密码哈希更安全。
SQL> col username for a20
SQL> select username,PASSWORD_VERSIONS from dba_users where rownum<2;

USERNAME             PASSWORD_VERSIONS
-------------------- ---------------------------------------------------
SYS                  11G 12C

上述的前提是不知道原有账户的密码的解决方案,如果是版本的迁移,直接直接通过明文密码来创建用户即可。

http://www.cndba.cn/dave/article/131509

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2237
    原创
  • 2
    翻译
  • 535
    转载
  • 185
    评论
  • 访问:6531835次
  • 积分:4229
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ