一、背景
用户是登录数据库的账户,一般情况下,默认一个账户对应一个用户,安装完DM数据库后,系统默认自带一些系统级的用户,主要有四个:
1、SYS -----达梦数据库内置管理用户,不能登录数据库,数据库使用的大部分的数据字典和动态性能视图SYS;
2、SYSDBA-----数据库的管理员;
3、SYSAUDITOR---审计用户;
4、SYSSSO---安全用户在DM数据库中;
每一个用户都有一个默认的表空间,对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
其次与用户相关的概念有:
模式:一个用户默认对应一个同名的模式,但一个用户也可以创建多个模式;
权限:即一个用户,拥有访问数据库哪些资源的哪些权利;
角色:类似于用户组,创建角色时一般会指定角色权限,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限,DM数据库预定义角色有三个: DBA、PUBLIC、RESOURCE。
关于用户相关的模式、权限、角色在此未展开描述,后续会在其他文章展开。
二、用户相关操作
1、创建用户
语法格式:
CREATE USER <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][<
锁定子句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][<
禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子 句>];<身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式> <数据库身份验证模式> ::= BY <口令> <外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN>
<口令策略> ::= 口令策略项的任意组合
<锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK
<存储加密密钥> ::= ENCRYPT BY <口令> <空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED
<只读标志> ::= READ ONLY | NOT READ ONLY
<资源限制子句> ::= LIMIT <资源设置项>{,<资源设置项>}
<资源设置项> ::= SESSION_PER_USER <参数设置>|
CONNECT_IDLE_TIME <参数设置>|
CONNECT_TIME <参数设置>|
CPU_PER_CALL <参数设置>|
CPU_PER_SESSION <参数设置>|
MEM_SPACE <参数设置>|
READ_PER_CALL <参数设置>|
READ_PER_SESSION <参数设置>|
FAILED_LOGIN_ATTEMPS <参数设置>|
PASSWORD_LIFE_TIME <参数设置>|
PASSWORD_REUSE_TIME <参数设置>|
PASSWORD_REUSE_MAX <参数设置>|
PASSWORD_LOCK_TIME <参数设置>|
PASSWORD_GRACE_TIME <参数设置>
<参数设置> ::=<参数值>| UNLIMITED
<允许 IP 子句> ::= ALLOW_IP <IP 项>{,<IP 项>}
<禁止 IP 子句> ::= NOT_ALLOW_IP <IP 项>{,<IP 项>}
<IP 项> ::= <具体 IP>|<网段> <允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>}
<禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>}
<时间项> ::= <具体时间段> | <规则时间段> <具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间> <规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间>
<规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN
<TABLESPACE 子句> ::=DEFAULT TABLESPACE <表空间名>
<INDEX_TABLESPACE 子句> ::= DEFAULT INDEX TABLESPACE <表空间名>
在我们实际使用中,我们最主要需要注意的是,创建用户指定的用户名、密码、资源限制、模式、表空间以及权限;
下面我们进行创建测试:
CREATE USER QHKTEST IDENTIFIED BY qhkKKK123 DISKSPACE LIMIT 2 LIMIT CONNECT_IDLE_TIME 1, PASSWORD_GRACE_TIME 3;
首先我们创建一个QHKTEST用户,密码为qhkKKK123,磁盘使用空间2M,其次会话连接闲置时间为1分钟,密码过期时间3天;
然后我们用QHKTEST登录数据库,看设置是否生效,特别是一分钟闲置会话时间的设置
从上面我们可以看到,用户登录数据库成功,但是等了3分钟过后,执行SQL的时候,就报错“网络连接异常”,即我们设置的用户策略全都是生效的;
2、用户赋权
语法格式:
GRANT [PRIV_NAME] ON [SCHEMA_NAME].[TABLE_NAME] TO [USER_NAME];
测试只给QHKTEST一个表的SELECT 权限,其余表无权限
GRANT SELECT ON SYSDBA.TEST1 TO QHKTEST;
赋权成功后查询测试:
一般情况下,我们需要赋权的主要是增删查改,其次就是创建视图,触发器等,具体权限设置,根据需求确定。
3、修改用户:
首先我们查看系统中所有的用户信息:
select * from dba_users;
从上面可以看到,QHKTEST的默认表空间和SYSDBA用户一样,也是MAIN,而创建QHKTEST的时候未指定表空间,现在我们修改默认表空间:
CREATE TABLESPACE QHKTEST DATAFILE 'F:\DM7\DATA\DAMENG\QHKTEST.DBF' SIZE 128; ALTER USER QHKTEST IDENTIFIED BY qhkKKK123 DEFAULT TABLESPACE QHKTEST; SELECT * FROM DBA_USERS;
日常运维过程中,我们经常会用到alter命令以实现用户信息的修改,其他常用的包括:修改密码alter...identified by...、锁定解锁用户alter ...acount lock/unlock等,在此不做展开。
4、 查询用户信息:
查询所有用户信息(如上面截图):
select * from dba_users;
查询所有用户对应的角色:
select * from dba_role_privs;
查询当前用户:
select * from user_users;
5、删除用户:
DELETE USER QHKTEST CASCADE;
该命令请谨慎使用,防止影响生产环境。