资讯动态

达梦 DM8 使用 GRANT SELECT ON SCHEMA 给账号授予整个模式只读权限(含新建表自动授权)

发布时间:2026/10/14 7:44:35 来源:尧图企业网站定制
场景给 fanruan 用户授予 datacenter 模式表只读权限新建表自动继承查询权限一、方案说明达梦 DM8 提供GRANT ... ON SCHEMA模式级一键授权语法。授权成功后该模式下已有表 后续新建的表用户自动获得 SELECT 查询权限无需重复执行授权 SQL。⚠️ 重要前提该语法依赖 INI 静态参数GRANT_SCHEMA默认关闭修改静态参数需要重启数据库实例。 如果业务窗口不允许重启数据库请使用【备选方案逐表批量授权】无需重启缺点是新增表不会自动授权。引用官方文档DM8 安全管理手册 - 3.3.4 模式权限的分配与回收 自主访问控制 | 达梦技术文档原文要点对象 为 SCHEMA 时须提前设置 INI 参数 GRANT_SCHEMA1 或 2即开启授予和回收模式权限功能。授予模式权限后用户对该模式下已存在的对象拥有指定权限对该模式下后续新建的同类型对象自动拥有该权限。DM8 SQL 语言使用手册 附录 3 系统存储过程 SP_SET_PARA_VALUE 附录 | 达梦技术文档SP_SET_PARA_VALUE 用于修改 dm.ini 整型参数scope2 代表仅写入 ini 文件静态参数修改后必须重启实例加载生效。DM8 SQL 语言使用手册 3.2.1 用户定义语句 CREATE USER 数据定义语句 | 达梦技术文档CREATE USER 创建数据库用户创建用户后必须授予 CREATE SESSION 系统权限用户才可以登录数据库。二、前置条件数据库版本DM8 ≥ 8.1.3.15低版本不支持ON SCHEMA语法执行账号SYSDBA三权分立/ DB_OBJECT_ADMIN四权分立停机窗口需要数据库重启操作业务低峰期执行三、完整操作步骤步骤 1检查当前 GRANT_SCHEMA 参数SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAMEGRANT_SCHEMA;返回PARA_VALUE0默认关闭需要修改参数并重启返回PARA_VALUE1参数已开启直接跳转到步骤 4无需修改参数、无需重启步骤 2开启 GRANT_SCHEMA 参数参数为 0 才执行-- scope2仅写入dm.ini磁盘文件静态参数内存不生效修改后必须重启实例 SP_SET_PARA_VALUE(2,GRANT_SCHEMA,1);步骤 3重启达梦实例验证参数生效Linux dmdba 用户执行重启命令systemctl restart DmServiceDMSERVER重启完成再次校验参数SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAMEGRANT_SCHEMA;查询结果必须为 1否则GRANT SELECT ON SCHEMA会报语法错误步骤 4创建 fanruan 用户用户不存在才执行已存在跳过CREATE USER fanruan IDENTIFIED BY Fanruan2026;密码按现场密码安全策略自行修改步骤 5授予用户登录会话权限必选否则无法连接数据库GRANT CREATE SESSION TO fanruan;步骤 6核心授权语句授予 datacenter 模式只读权限-- 授予 fanruan 访问 datacenter 模式所有表已有表未来新建表自动拥有select GRANT SELECT ON SCHEMA datacenter TO fanruan;不添加WITH ADMIN OPTION代表 fanruan 不能把该权限转授其他账号生产环境推荐不加。步骤 7SYSDBA 校验模式级授权信息SELECT GRANTEE,PRIVILEGE,SCHEMA_NAME FROM DBA_SCHEMA_PRIVS WHERE GRANTEEFANRUAN;步骤 8业务侧验证fanruan 账号登录测试fanruan 账号连接数据库后执行测试查询-- 测试查询datacenter模式表取前10行验证 SELECT * FROM datacenter.ods_table WHERE ROWNUM 10;注意已经建立的旧会话不会自动加载新权限fanruan 账号需要重新连接数据库新会话权限立即生效。四、权限回收脚本后期需要撤销只读权限REVOKE SELECT ON SCHEMA datacenter FROM fanruan;执行回收后已有表和未来新建表的自动 SELECT 权限全部取消。五、重要限制 坑点必看仅对 TABLE 表生效视图、存储过程、序列不会自动授权datacenter 模式下新建视图fanruan 访问视图需要单独授权GRANT SELECT ON datacenter.v_test TO fanruan;GRANT_SCHEMA是实例全局静态参数开启后实例内所有 DBA 均可使用 ON SCHEMA 模式批量授权扩大权限管控面存在一定安全风险。误区提醒修改参数 重启≠自动授权。参数只是开启语法开关必须手动执行 GRANT 语句fanruan 账号才会获得权限。仅作用于 datacenter 单个模式不会赋予其他模式的访问权限区别于SELECT ANY TABLE全局查表权限。六、备选方案业务不能停机、不允许重启数据库推荐很多生产使用不开启 GRANT_SCHEMA批量生成 datacenter 模式下所有表的 SELECT 授权 SQL全程无需重启数据库。-- 批量生成授权语句复制输出结果执行即可 SELECT GRANT SELECT ON datacenter.||TABLE_NAME|| TO fanruan; FROM DBA_TABLES WHERE OWNERDATACENTER;缺点datacenter 后续新建表不会自动授权需要定期重新执行脚本新增授权。七、两种方案对比表格方案优点缺点适用场景GRANT SELECT ON SCHEMA 模式一键授权一次授权后续新建表自动拥有查询权限需要修改静态参数 重启实例全局开启 GRANT_SCHEMA 参数可以申请停机窗口模式内表频繁新增逐表批量授权无需重启数据库无全局参数改动新增表需要重新跑脚本授权业务不允许停机表新增频率低

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑