达梦数据库学习(五、用户管理)
上期回顾:
用户管理是安全管理的一部分
达梦数据库的多权分立(实际上可以参考美国三权分立,不用深究)
SQL>select username from dba_users;
SYSDBA 数据库管理员
SYS 内置管理员,不能登录数据库
SYSSSO 数据库安全员(安全版使用)
SYSAUDITOR 数据库审计员
达梦数据库的版本:开发版(默认为1年free期限),标准版(不支持集群),企业版(可配置集群),安全版(配置安全策略)
每个用户去完成各自的任务。(多权分立)
一、规划用户
命名:
字母开头,可以包含字母和数字以及这三个特殊符号#$_
不能超过128个字符
存储位置:
规划用户的表空间--default tablespace XX
密码策略
密码的有效期 --password_life_time
密码尝试登录次数--failed_login_attemps
密码历史--
密码宽限期
资源管理
会话的空闲时间
私有内存
磁盘空间
权限管理
系统权限(可以对数据库做什么)
对象权限(能够对数据库对象做什么)
案例1:创建一个用户user1,密码的有效期180天,尝试登录次数2次。每次锁定1分钟,存储到tbs4表空间中,用户可以创建表,可以查询dmhr.city表。
SQL>create user user1 identified by 1234567890 limit password_life_time 180,FAILED_LOGIN_ATTEMPS 2,password_lock_time 1 default tablespace tbs4;
注意:
系统默认口令策略:0:无策略;1:禁止与用户名相同;2:口令长度不小于0;4:至少包含一个大写字母(A-Z);8:至少包含一个数字(0-9);16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。注意当COMPATIBLE_MODE=1时,实际PWD_POLICY的实际值为0
SQL>select para_name,para_value from v$dm_ini where para_name=’PWD_POLICY’;
兼容模式:
是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准;2:部分兼容ORACLE数据库;3:部分兼容MS SQL SERVER,4:部分兼容MYSQL,5:兼容MD6,6:部分兼容TERADATA
修改:
sp_set_para_value(2,’COMPATIBLE_MODE’,’2’);
SQL>select username,account_status from dba_users;
OPEN 表示打开状态.LOCKED表示锁定状态
SQL>alter user user1 account lock;--锁定用户
SQL>alter user user1 account unlock;--解锁用户
查看当前的用户:
SQL>select user;
查看用户默认的角色:
SQL>select grantee,granted_role from dba_role_privs where grantee=’user1’;
查看角色的权限:
SQL>select grantee,granted_role from dba_sys_privs where grantee in (‘PUBLIC’,’SOI’);
授权系统权限:
SQL>grant create table to user1;
授权对象权限:
SQL>grant select on dmhr.city to user1;
注意:
系统权限和对象权限不能写在同一条语句中。
案例2:创建用户user2,存储位置tbs4,空闲会话为2分钟,私有内存为200M,可以创建视图,可以更新dmhr.city(注意可以更新一个表意味着必须首先可以查看这个表)
SQL>create user user2 identified by 1234567890 limit CONNECT_IDLE_TIME 2,mem_space 200 default tablespace tbs4;
授权可创建视图
SQL>grant create view to user2;
授权查看dmhr.city表(然后才能授权更新这个表)
SQL>grant select on dmhr.city to user2;
授权更新dmhr.ciyt表
SQL>grant update on dmhr.city to user2;
撤销权限:
数据库对象权限:
SQL>revoke select on dmhr.city from user1;
数据库系统权限:
SQL>revoke create table from user1;
二、角色管理
角色是一类权限的集合,方便管理。
角色主要类型:DBA、PUBLIC、RESOURCE
不建议把DBA角色给普通用户,权限过大(但是实际生产往往都这样搞……)
PUBLIC角色是创建用户时默认分配的。
一般情况下,把RESOURCE角色分配给用户,基本可以满足系统权限的需求。
自定角色:
SQL>create role R1;
把权限分给角色:
SQL>grant select on dmhr.city to R1;
把角色分配给用户:
SQL>grant R1 to user1;
删除角色和用户
删除角色:
SQL>drop role R1;
删除用户:
SQL>drop user user1;
注意因为用户中存在表,因此会报错提示“[-2639]:试图删除被依赖对象”
SQL>drop user user1 cascade;--进行级联删除