**

1、如何创建用户

**

1.1 系统管理员SYSDBA用户的创建语法

使用DM管理工具登录数据库->用户->管理用户->SYSDBA->右键属性->DDL,得到如下语句:
create user “SYSDBA” identified by “******” password_policy 0
encrypt by “******”
default tablespace “MAIN”;
grant “SYS_ADMIN” to “SYSDBA”;
grant “DBA”,“RESOURCE”,“PUBLIC” to “SYSDBA” with admin option;
grant EXECUTE on “SYS”.“DBMS_XMLGEN” to “SYSDBA”;

说明:详见《DM7_SQL语言使用手册》
“用户名”:引号中的名字不管是大写还是小写,创建的用户名都是大写。
password_policy:指定密码复杂度的策略,可以为以下值,或其任何组合:
0 无策略;
1 禁止与用户名相同;
2 口令长度不小于 9;
4 至少包含一个大写字母(A-Z);
8 至少包含一个数字(0-9);
16 至少包含一个标点符号(英文输入法状态下,除― 和空格外的所有符号)。
若为其他数字,则表示以上设置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项
策略。当设置为 0 时,表示设置口令没有限制,但总长度不得超过 48 个字节。另外,若不
指定该项,则默认采用系统配置文件中 PWD_POLICY 所设值。
encrypt by “密码”:存储加密密钥用于与半透明加密配合使用,缺省情况下系统自动生成一个密钥,半透明加密时用户仅能查看到自己插入的数据,一般用不到。
1.2 一般创建用户的语法
但是我们一般创这样建用户,指定用户名、密码和表空间就可以:
create user TEST identified by “000000000” default tablespace MAIN;

2、关于密码复杂度的问题

如果我们按照1.2中的语法创建用户,此时如果想把密码改为“TEST”,会报[-2504]:密码长度不符合要求。因为按照1.1中的步骤查看TEST用户的DDL语句,我们发现password_policy的值为2,因为只有系统用户的密码策略才默认是0。因为如果创建用户是没有指定password_policy的值,数据库会自动读取系统的PWD_POLICY参数作为password_policy的值,而达梦数据库初始化后PWD_POLICY默认等于2。

查看默认密码策略:
SQL> select PARA_NAME,PARA_VALUE from v$dm_ini where para_name=‘PWD_POLICY’;

行号 PARA_NAME PARA_VALUE


1 PWD_POLICY 2

已用时间: 107.125(毫秒). 执行号:901.

我们这时候想到的就是修改密码复杂度策略,而右键修改用户-常规中的密码策略都是灰色,说明不能改。

docker compose 搭建达梦主备集群 达梦建用户_数据库

使用命令进行修改,会得到“非安全版本不能进行此操作”报错,我们才知道原因,只有安全版才可以修改。达梦数据库分为开发板、标准版、企业版和安全版。没有安装授权文件的是开发版。

docker compose 搭建达梦主备集群 达梦建用户_用户名_02

通过下面的语句我们可以查看所有用户当前的密码策略:

SELECT U.PWD_POLICY,D.* FROM SYSUSER$ U,DBA_USERS D WHERE U.ID=D.USER_ID ;

docker compose 搭建达梦主备集群 达梦建用户_数据库_03

3、如何解决

解决刚才问题的方式只有一个:使用安全版的授权文件。更换授权版的KEY文件后我们就可以随便修改密码策略了。除此之外没有别的方法。