达梦数据库用户与模式管理

在进行达梦数据库用户与模式管理时,我们必须要明确达梦数据库用户与模式的定义及其之间的关系:

用户(USER) :用户是用来连接数据库并进行相关操作的。

模式(SCHEMA) :模式是数据库对象的集合,模式是数据库的逻辑结构。

在达梦数据库中,用户(USER)和模式(SCHEMA)是一对多的关系,即一个用户拥有至少一个及以上的模式,而一个模式只能属于一个用户。达梦数据库用户与模式的对应关系可以通过如下方式查看。

SQL> select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;
 
行号       USERNAME   SCHENMA
---------- ---------- ----------
1          SYSSSO     SYSSSO
2          SYSDBA     SYSJOB
3          SYSDBA     PERSON
4          SYSDBA     OTHER
5          SYSDBA     SYSDBA
6          SYSDBA     PRODUCTION
7          SYSDBA     PURCHASING
8          SYSDBA     RESOURCES
9          SYSDBA     SALES
10         SYSAUDITOR SYSAUDITOR
11         SYS        CTISYS
 
行号       USERNAME SCHENMA
---------- -------- -------
12         SYS      SYS
13         DMHR     DMHR
 
13 rows got
 
已用时间: 2.138(毫秒). 执行号:96.
SQL>


1 、创建用户

达梦数据库创建用户的命令是 CREATE USER,创建用户所涉及的内容包括为用户指定用户名、认证模式、口令、口令策略、空间限制、只读属性以及资源限制。其中用户名是代表用户账号的标识符,长度为 1~128 个字符。用户名可以用双引号括起来,也可以不用,但如果用户名以数字开头,必须用双引号括起来。在创建用户前,需要提前规划并创建相关的表空间。

例如:创建用户DM8DBA,默认表空间为main,默认索引表空间为main,用户名密码为Dm8dba_123,用户密码策略为2,连续登陆失败3次后,用户自动锁定1分钟,用户密码过期宽限天数为10天。

SQL> create user DM8DBA identified by Dm8dba_123 password_policy 2 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace main default index tablespace main;
create user DM8DBA identified by Dm8dba_123 password_policy 2 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace main default index tablespace main;
第1 行附近出现错误[-5630]:非安全版本不能进行此操作.
已用时间: 2.998(毫秒). 执行号:0.
SQL> create user DM8DBA identified by Dm8dba_123 limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace main default index tablespace main;
操作已执行
已用时间: 9.550(毫秒). 执行号:101.
SQL>


注意:如果要在创建用户时指定口令策略,必须使用达梦数据库安全版本,此处为非安全版本,是无法使用口令策略的,达梦数据库用户口令最长为 48 字节,创建用户语句中的 PASSWORD POLICY 子句用来指定该用户的口令策略,系统支持的口令策略有:

0 无策略

1 禁止与用户名相同

2 口令长度不小于 9

4 至少包含一个大写字母(A-Z)

8 至少包含一个数字(0-9)

16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。若在创建用户时没有使用 PASSWORD POLICY 子句指定用户的口令策略,则使用系统的默认口令策略。系统管理员可通过SELECT * FROM V$PARAMETER WHERE NAME=’PWD_POLICY’;查询 PWD_POLICY 的当前值。

2 、用户权限授予与回收

SQL> grant resource,public to dm8dba;
操作已执行
已用时间: 5.800(毫秒). 执行号:109.
SQL> revoke resource,public from dm8dba;
操作已执行
已用时间: 5.441(毫秒). 执行号:110.
SQL>


一般情况下,达梦数据库用户授予resource,public权限就可以了,需要其他权限可以联系DBA进行授予。

3 、修改用户属性

例如:修改用户DM8DBA的默认索引表空间为dmhr。

SQL> alter user dm8dba default index tablespace dmhr;
操作已执行
已用时间: 7.522(毫秒). 执行号:112.
SQL>


达梦数据库修改用户属性使用alter user语句,创建用户和修改用户的详细语法可参考达梦官方安全管理手册。

4 、查询用户信息

例如:查看DM8DBA用户的相关信息。

SQL> select * from dba_users where username = 'DM8DBA';
 
行号       USERNAME USER_ID     PASSWORD ACCOUNT_STATUS LOCK_DATE
---------- -------- ----------- -------- -------------- ---------
           EXPIRY_DATE
           ----------------------------------------------------------------------------------------------------
           DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
           ------------------ --------------------
           CREATED
           ----------------------------------------------------------------------------------------------------
           PROFILE                        INITIAL_RSRC_CONSUMER_GROUP EXTERNAL_NAME PASSWORD_VERSIONS
           ------------------------------ --------------------------- ------------- -----------------
           EDITIONS_ENABLED AUTHENTICATION_TYPE
           ---------------- -------------------
           NOWDATE
           ----------------------------------------------------------------------------------------------------
1          DM8DBA   50331749    NULL     OPEN           NULL
           NULL
           MAIN               TEMP
           2021-12-30 21:47:08.580000
           E:\dmdbms\data\DAMENG\MAIN.DBF NULL                        NULL          2
           Y                NDCT_DB_AUTHENT
           2021-12-30 22:05:57
 
 
已用时间: 2.109(毫秒). 执行号:113.
SQL>


5 、创建模式

例如:创建模式DM8DBA_SCH,属于DM8DBA用户。

SQL> create schema dm8dba_sch authorization dm8dba
2   /
操作已执行
已用时间: 1.185(毫秒). 执行号:115.
SQL>


这时,我们再来看看,DM8DBA用户下的模式信息。

SQL> select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null and a.name = 'DM8DBA';
 
行号       USERNAME SCHENMA
---------- -------- ----------
1          DM8DBA   DM8DBA
2          DM8DBA   DM8DBA_SCH
 
已用时间: 5.659(毫秒). 执行号:117.
SQL>


可以看到,DM8DBA用户有两个模式:DM8DBA和DM8DBA_SCM,模式DM8DBA是在创建用户时自动创建的,且与DM8DBA用户是同名的,这是达梦数据库默认的。

注意:命令行创建模式时,以/结束。

6 、删除用户和模式

例如:删除模式DM8DBA_SCH,删除用户DM8DBA。

SQL> drop schema dm8dba_sch;
操作已执行
已用时间: 51.667(毫秒). 执行号:118.
SQL> drop user dm8dba;
操作已执行
已用时间: 52.364(毫秒). 执行号:119.
SQL>
SQL>  select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null and a.name = 'DM8DBA';
未选定行
 
已用时间: 1.451(毫秒). 执行号:120.
SQL>


注意:在删除用户时,会删除用户底下所有的模式,所以在达梦数据库中,如果一个用户有多个模式,在删除一个模式时,千万注意不能使用drop user的方式,要用drop schema删除。


请使用浏览器的分享功能分享到微信等