达梦数据库设置表的访问控制权限

本文详细解析了在DM数据库中如何为用户配置特定表的访问权限。通过建立测试用户、角色和权限分配,演示了如何收回公共权限并指定特定表的访问权,确保数据库的安全性和用户访问控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中,大家都会遇到这样的场景,出于对数据库访问安全的考虑,对于某些用户我们不想让他们看到全库的表,只想给他们特定表的访问权限。那么在DM数据库中我们该如何去配置相应的权限呢? 我们下面来进行详细解析。

1、我们首先来建立一个测试用户test;

SQL>create user test identified by test123456;

在这里插入图片描述

2、接下来看一下TEST用户相应的角色和权限。

SQL>Select grantee,granted_role from dba_role_privs where grantee=‘TEST’;

在这里插入图片描述

默认是public角色。查看一下public角色所拥有的权限。

SQL>Select grantee,privilege from dba_sys_privs where grantee=PUBLIC;

Public角色默认拥有当前用户下所有表的insert,update,delete,select,grant……权限
在这里插入图片描述

3、我们来建两个测试表。在sysdba用户下创建一个T1表,test用户下创建T2表。

SQL>Create table sysdba.t1 (id int,name varchar(20));
SQL>Insert into sysdba.t1 values (1,’sysdba’);
SQL>Commit;

在这里插入图片描述

SQL>Create table test.t2(id int,name varchar(20));
SQL>Insert into test.t2 values(2,’test’);
SQL>Commit;

在这里插入图片描述

4、使用test用户登录数据库,访问相应的表。

[dmdba@NeoKylin6-dm8 ~]$ disql test/test123456
SQL> select * from sysdba.t1;
SQL> select * from t2;

Test用户只能访问本用户下的t2表,不能访问sysdba用户下的t1表。
在这里插入图片描述

5、下面我们收回test的public权限,以sysdba用户登录执行。

SQL>Revoke  public  from test;

在这里插入图片描述
我们再查询一下test用户的访问权限
在这里插入图片描述
我们看到test用户的public权限已被收回。再以test用户登录进行查询,发现test.t2表的访问权限已经没有了,sysdba.t1表的访问权限也已经没有了。
在这里插入图片描述
我们给test用户配置相应的表的权限,比如我们只给test用户查看sysdba.t1的权限:SQL>Grant select on sysdba.t1 to test;
在这里插入图片描述
用test用户登录,我们可以查询sysdba.t1表的数据,但是却查询不了test.t2表的数据,因为我们没有赋给test用户,test.t2的查询权限,那怕t2表是test用户下的表。
在这里插入图片描述
这样我们表的访问控制权限就配置完成了。

Test用户权限测试情况总结:

表 名有public权限没有public权限特定的权限(sysdba.t1)
Sysdba.t1不能访问不能访问可以访问
Test.t2可以访问不能访问不能访问
### 如何在达梦数据库创建空间 #### 工具准备 为了顺利创建空间,在操作前需确认已安装并配置好达梦数据库环境。通过命令行访问 `tool` 目录下的管理工具,输入相应密码即可进入管理界面[^1]。 #### 创建空间的具体方法 以下是基于 SQL 的标准流程用于创建空间: ```sql CREATE TABLESPACE 空间名称 DATAFILE '文件存放路径/空间文件名称.DBF' SIZE 32 AUTOEXTEND ON MAXSIZE 16777215 CACHE = NORMAL; ``` 上述语句中的参数解释如下: - **空间名称**:自定义命名,建议具有描述性和唯一性。 - **DATAFILE**:指定存储数据的实际物理文件位置及其名称,注意文件扩展名为 `.DBF`。 - **SIZE**:初始分配大小,默认单位为 MB。 - **AUTOEXTEND ON**:允许自动扩展磁盘容量。 - **MAXSIZE**:设置最大可增长至的空间量。 - **CACHE = NORMAL**:缓存策略设定为常规模式。 完成以上步骤后,可以验证新建立的空间是否存在以及其属性是否正确配置完毕[^2]。 #### 关联用户到新建空间 一旦空间被成功构建起来,则需要进一步关联它给特定用户作为默认工作区。这一步骤可通过下面这条指令实现: ```sql ALTER USER 用户名 DEFAULT TABLESPACE 空间名; ``` 这里,“用户名”代目标账户标识符;而“空间名”,则是之前所创设的那个专属区域标签。 #### 注意事项 在整个过程中有几个要点需要注意避免常见失误: - 确认所有涉及路径均真实存在并且权限适当开放以便读写操作无障碍执行; - 特别留意文件格式问题——务必采用`.dbf`结尾的标准形式声明外部储存单元; - 调整内存限制数值(如遇到因默认值过低而导致失败的情况),通常情况下将其提升至至少匹配当前硬件条件支持的最大限度会有所帮助。 ```python # 示例 Python 连接脚本片段展示如何调用这些SQL命令 import dmPython conn = dmPython.connect(user='SYSDBA', password='sysdba', serverName='localhost') cursor = conn.cursor() try: cursor.execute(""" CREATE TABLESPACE my_tablespace DATAFILE '/path/to/data/my_tablespace.dbf' SIZE 32 AUTOEXTEND ON MAXSIZE 16777215 CACHE = NORMAL """) cursor.execute("CREATE USER test_user IDENTIFIED BY test_password;") cursor.execute("ALTER USER test_user DEFAULT TABLESPACE my_tablespace;") finally: cursor.close() conn.commit() # 提交事务以保存更改 conn.disconnect() ``` 此代码段仅作演示用途,实际部署时应考虑安全性加固措施比如加密传输敏感信息等最佳实践方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值