签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦数据库 口令策略 说明

2019-09-05 11:18 8876 0 原创 DM 达梦
作者: dave

在之前的博客讲用户管理时提到创建用户的问题:

DM 达梦数据库 用户管理 说明
https://www.cndba.cn/dave/article/3567http://www.cndba.cn/cndba/dave/article/3642http://www.cndba.cn/cndba/dave/article/3642http://www.cndba.cn/cndba/dave/article/3642

在对用户密码进行修改时,会有如下提示:

SQL> alter user dmhr identified by dmhr;
 alter user dmhr identified by dmhr;
[-2504]:Error in line: 1
Password length must between 9 and 48.
used time: 0.992(ms). Execute id is 0.

SQL> alter user dmhr identified by "www.cndba.cn";
executed successfully
used time: 5.587(ms). Execute id is 74.

这里的限制就是DM的口令策略,该策略由dm.ini 文件中的PWD_POLICY 参数控制,该参数时动态/系统级。可以在线进行修改。 该策略有如下之:

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

0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于 9;
4: 至少包含一个大写字母(A-Z);
8 :至少包含一个数字(0-9);
16:至少包含一个标点符号,英文输入法状态下,除“和空格外的所有符号;

若为其他数字,则表示配置值的和,如 3=1+2, 表示同时启用第 1 项和第 2 项策略。
当COMPATIBLE_MODE=1 时,PWD_POLICY 的实际值均为 0。

查看当前值:

SQL> select SF_GET_PARA_VALUE(2,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(2,'PWD_POLICY')
---------- ---------------------------------
1          2

used time: 1.083(ms). Execute id is 88.

设置为1:

SQL> SP_SET_PARA_VALUE (2,'PWD_POLICY',1);
DMSQL executed successfully
used time: 16.115(ms). Execute id is 89.

SQL> select SF_GET_PARA_VALUE(2,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(2,'PWD_POLICY')
---------- ---------------------------------
1          2
used time: 0.725(ms). Execute id is 90.

SQL> SP_SET_PARA_VALUE (1,'PWD_POLICY',1);
DMSQL executed successfully
used time: 10.499(ms). Execute id is 91.

参数生效:

SQL>  select SF_GET_PARA_VALUE(2,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(2,'PWD_POLICY')
---------- ---------------------------------
1          1
used time: 1.507(ms). Execute id is 92.
SQL> 
SQL> select SF_GET_PARA_VALUE(1,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(1,'PWD_POLICY')
---------- ---------------------------------
1          1

used time: 11.064(ms). Execute id is 94.
SQL>

修改密码验证:

SQL> alter user dmhr identified by dmhr;
alter user dmhr identified by dmhr;
[-2504]:Error in line: 1
Password length must between 9 and 48.
used time: 1.159(ms). Execute id is 0.

查询参数时生效了,但从实际测试看并未生效,重启DB在测试,依旧没有生效:

[dave@www.cndba.cn cndba]$ service DmServicedave stop
Stopping DmServicedave:                                    [ OK ]
[dave@www.cndba.cn cndba]$ service DmServicedave start
Starting DmServicedave:                                    [ OK ]
[dave@www.cndba.cn cndba]$

SQL> alter user dmhr identified by dmhr;

Server[LOCALHOST:5236]:mode is normal, state is open
connected
alter user dmhr identified by dmhr;
[-2504]:Error in line: 1
Password length must between 9 and 48.
used time: 1.457(ms). Execute id is 0.
SQL> 

SQL>  select SF_GET_PARA_VALUE(1,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(1,'PWD_POLICY')
---------- ---------------------------------
1          1

used time: 9.774(ms). Execute id is 3.
SQL> select SF_GET_PARA_VALUE(2,'PWD_POLICY');

LINEID     SF_GET_PARA_VALUE(2,'PWD_POLICY')
---------- ---------------------------------
1          1

used time: 1.414(ms). Execute id is 4.
SQL>

新建用户测试生效:即默认的策略时对新用户生效,对老用户无效:

SQL> create user anqing identified by dave;
executed successfully
used time: 14.264(ms). Execute id is 10.
SQL>
SQL> alter user anqing identified by anqing;
executed successfully
used time: 5.940(ms). Execute id is 11.
SQL>

进一步研究,发现用户的密码时有版本的:对应版本为0的时可以修改的,这里的0 对应的就是我们的口令策略,所以如果对于老用户,如果想修改,只需要将用户的策略修改成对应的口令策略即可:http://www.cndba.cn/cndba/dave/article/3642http://www.cndba.cn/cndba/dave/article/3642

SQL> select username,password_versions from dba_users;

LINEID     USERNAME   PASSWORD_VERSIONS
---------- ---------- -----------------
1          SYS        0
2          SYSDBA     0
3          SYSAUDITOR 0
4          SYSSSO     0
5          DMHR       2
6          DAVE       2
7          CNDBA      2
8          DEXP       2
9          DIMP       2
10         ANQING     0

10 rows got

used time: 8.127(ms). Execute id is 24.
SQL> 

SQL> select t2.id,t1.username,t2.pwd_policy from dba_users t1,sysuser$ t2 where t1.user_id=t2.id;

LINEID     ID          USERNAME   PWD_POLICY 
---------- ----------- ---------- -----------
1          50331648    SYS        0
2          50331649    SYSDBA     0
3          50331650    SYSAUDITOR 0
4          50331651    SYSSSO     0
5          50331748    DMHR       2
6          50331749    DAVE       2
7          50331750    CNDBA      2
8          50331751    DEXP       2
9          50331752    DIMP       2
10         50331753    ANQING     0

10 rows got

used time: 14.906(ms). Execute id is 49.
SQL>

修改dmhr的口令策略为0:

SQL> alter user dmhr PASSWORD_POLICY 0;
alter user dmhr PASSWORD_POLICY 0;
[-5630]:Error in line: 1
Current DM Server is not a secure version, you can't do this operation.
used time: 0.884(ms). Execute id is 0.
SQL> 
SQL> update sysuser$ set pwd_policy=0 where id=50331748;
update sysuser$ set pwd_policy=0 where id=50331748;
[-2633]:Error in line: 1
Try to alter system table or inner table[SYSUSER$].
used time: 1.093(ms). Execute id is 0.
SQL>

因为用的是企业版,所有无法修改,如果是安全版的DM,那么也可以直接修改老用户的策略版本,使用新策略。

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

结论:

每个用户在新建的时候,属性里的默认口令策略采用系统的口令策略,我们之后修改的口令策略只对之后的用户生效。对老用户,在安全版的DM中可以直接修改每个用户的口令策略,使之使用新的口令策略。http://www.cndba.cn/cndba/dave/article/3642http://www.cndba.cn/cndba/dave/article/3642

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

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

dave

关注

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

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

        QQ交流群

        注册联系QQ