达梦DM V8数据库跨用户的表/视图查询权限授权步骤

365bet最新备用 📅 2026-01-20 10:55:34 👤 admin 👁️ 3210 ❤️ 356
达梦DM V8数据库跨用户的表/视图查询权限授权步骤

1达梦数据库表/视图查询权限授权步骤

1.1场景1:将指定表/视图的查询权限授予给指定用户

授予权限:将A用户下特定表或视图的 SELECT 权限授予B用户

访问方式:B用户访问A用户的表或视图名时,需要使用 A.表名或视图名 的格式。

假设:

A用户:user_a

B用户:user_b

要授权的表:T_table1, T_table2

要授权的视图:V_view1,V_view2

步骤 1:使用管理员账户(如 SYSDBA)连接数据库

你需要一个有足够权限的账户(通常是 DBA)来执行创建用户和授权的操作。

步骤 2:创建 B 用户(如果不存在)

如果 user_b 不存在,需要先创建。

– 用SYSDBA用户执行

CREATE USER user_b IDENTIFIED BY “user_b_password”;

– 如果B用户还需要系统表和系统视图的权限,可以执行以下语句

grant soi,vti,public to user_b;

grant select any dictionary to user_b;

步骤 3:授予 特定表/视图 的 SELECT 权限

语法:

GRANT SELECT ON 属主.表名 TO 用户名;

GRANT SELECT ON 属主.视图名 TO 用户名;

– 授予单张表的权限,用属主用户执行比如user_a

GRANT SELECT ON user_a.T_table1 TO user_b;

GRANT SELECT ON user_a.T_table2 TO user_b;

GRANT SELECT ON user_a.V_view1TO user_b;

GRANT SELECT ON user_a.V_view2TO user_b;

验证

使用 B 用户登录,进行查询测试:

– 使用属主前缀

SELECT * FROM user_a.T_table1;

SELECT * FROM user_a.T_table2;

SELECT * FROM user_a.V_view1;

SELECT * FROM user_a.V_view2;

1.2场景2:将A模式下所有表/视图的 SELECT 权限授予B用户

授予权限:将A用户下所有表/视图的 SELECT 权限授予B用户。

访问方式:B用户访问A用户的表和视图时,需要使用 A.表名或视图名的格式。

方法1:

DM V8.1.3.26版本及之后版本才支持

修改dm.ini 参数GRANT_SCHEMA为1,重启数据库服务。

参数说明:

GRANT_SCHEMA 静态参数(重启数据库生效) 是否开启授予和回收模式权限功能。0:否;1:是 默认为0。

语法:

GRANT SELECT ON SCHEMA user_a TO user_b;

验证:

使用 B 用户登录,进行查询测试:

– 使用属主前缀

SELECT * FROM user_a.T_table1;

SELECT * FROM user_a.T_table2;

SELECT * FROM user_a.V_view1;

SELECT * FROM user_a.V_view2;

注意:后续新增的表和删除重建的表也会自动授予查询权限

方法2:

使用拼接SQL批量授权。

– 用属主用户执行比如user_a

—表

SELECT 'GRANT SELECT ON ‘||table_name|| ’ TO user_b;’ FROM user_tables ;

—视图

SELECT 'GRANT SELECT ON ‘||view_name|| ’ TO user_b;’ FROM user_views;

将执行的结果集(拼接好的授权语句)全部加载然后复制执行,完成授权。

验证:

使用 B 用户登录,进行查询测试:

– 使用属主前缀

SELECT * FROM user_a.T_table1;

SELECT * FROM user_a.T_table2;

SELECT * FROM user_a.V_view1;

SELECT * FROM user_a.V_view2;

注意:后续新增的表和删除重建的表不会自动授予查询权限,需要重新授权

方法3:

使用DM管理工具进行批量授权。

1、使用DM管理工具连接到数据库,找到“用户” - “管理用户” - 需要授予相关权限的用户名,然后右键 -> 选择“修改”。

2、“修改用户”窗口,选择“对象权限” - 展开被授权的用户模式 - 鼠标点击“表”或“视图” - 权限操作选择“授权”、SELECT权限一行勾选“授予”列选择框 - 点击“确认” 即可。

以表为例:

验证:

使用 B 用户登录,进行查询测试:

– 使用属主前缀

SELECT * FROM user_a.T_table1;

SELECT * FROM user_a.T_table2;

SELECT * FROM user_a.V_view1;

SELECT * FROM user_a.V_view2;

注意:后续新增的表和删除重建的表不会自动授予查询权限,需要重新授权

相关推荐

门中门防盗门优缺点
365bet体育在线总站

门中门防盗门优缺点

📅 07-15 👁️ 8919
什么是限制通话?含义、原因及屏蔽
365bet体育在线总站

什么是限制通话?含义、原因及屏蔽

📅 09-05 👁️ 966
京东开放平台直播管理规则是什么?京东开放平台关联店铺管理规则