本文于 6 天前发布,最后更新于 5 天前
一、前言
通常,为了数据库的安全考虑,我们需要给不同的使用者开通不同的访问用户,而有时需要开通仅有读取数据权限的用户,也就是创建只读用户。那么在达梦中如何创建只读用户呢?
二、创建方法
方法一:直接创建
CREATE USER "READ" IDENTIFIED BY "XXXXXXXXX" READ ONLY;
GRANT SELECT ANY TABLE TO "READ";
GRANT SELECT ANY VIEW TO "READ";
GRANT SELECT ANY SEQUENCE TO "READ";
GRANT SELECT ANY DICTIONARY TO "READ";
GRANT SELECT ANY MATERIALIZED VIEW TO "READ";
GRANT "RESOURCE","PUBLIC","VTI","SOI" TO "READ";
注意:虽然RESOURCE和PUBLIC两个角色中有部分DDL权限,但因为创建的是只读用户,即便给了权限也不必担心。
方法二:批量SQL生成
--创建普通用户
CREATE USER "RDOLUSER" IDENTIFIED BY "XXXXXXXXX";
--生成批量赋权SQL
SELECT 'GRANT SELECT ON 模式名.'||TABLE_NAME||' TO RDOLUSER;' FROM SYS.DBA_TABLES WHERE OWNER = '模式名';
SELECT 'GRANT SELECT ON 模式名.'||VIEW_NAME||' TO RDOLUSER;' FROM SYS.DBA_VIEWS WHERE OWNER = '模式名';
SELECT 'GRANT SELECT ON 模式名.'||SEQUENCE_NAME||' TO RDOLUSER;' FROM SYS.DBA_SEQUENCES WHERE SEQUENCE_OWNER = '模式名';
SELECT 'GRANT SELECT ON 模式名.'||DIRECTORY_NAME||' TO RDOLUSER;' FROM SYS.DBA_DIRECTORIES WHERE OWNER = '模式名';
注意:MATERIALIZED VIEW物化视图一并归属在DBA_VIEWS中,所以只需要执行以上SQL执行后的结果集中的SQL即可。
三、总结
一般情况下,推荐使用方法一,操作简单便捷。