DB2创建用户、模式、赋权举例

本文介绍如何在DB2数据库中通过操作系统用户与模式绑定实现权限管理。包括创建用户、模式及授权的具体步骤,如GRANT语句的应用,并演示了基本的数据库操作。

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

来了一个需求,比较简单,需要在db2数据库上创建一个用户给开发人员,只授予database相关操作权限,instance权限不给,其他数据库操作权限不给。常用操作主要为创建各种数据库对象,比如表,视图等。


上网google一下,发现DB2数据库里根本就没有用户这个概念,只有模式。那db2怎么进行权限分离和最小化管理?再深入地查资料时,发现db2自己在数据库体系结构内不使用用户的概念,但是它还是变相引用,它使用的是操作系统层面创建的用户,在数据库场面对创建模式,然后对操作系统用户、模式、database进行绑定即可。与oracle不一样的是,db2这里模式名字和用户名字可以不一样。

小结一下:  一个instance下可以有多个database,一个database下可以有多个schema,1个schema可以被多个user使用。 

操作步骤如下:

1、操作系统下创建用户

2、db2数据库下创建模式(也可以不创建。不创建的情况下,DB2会使用你连接的用户名作为默认的模式名字)

3、赋权给用户


--授权用户访问数据库权限

GRANT BINDADD ON DATABASE TO USER dstuser;
GRANT CONNECT ON DATABASE TO USER dstuser;
GRANT LOAD ON DATABASE TO USER dstuser;
--授予用户访问表空间的权限 
GRANT USE OF TABLESPACE GD_MAIN_TBS TO USER dstuser;
GRANT USE OF TABLESPACE GD_IDX_TBS TO USER dstuser;
--授予用户操作模式的权限
GRANT ALTERIN ON SCHEMA dstuser TO USER dstuser;
GRANT CREATEIN ON SCHEMA dstuser TO USER dstuser;
GRANT DROPIN ON SCHEMA dstuser TO USER dstuser;
--授予用户读取表权限
GRANT SELECT ON TABLE ECGD.CL_COMMODITY TO USER dstuser; 


创建各种对象:
groupadd -g 5000 appgroup
useradd -g appgroup -u 5001  dstuser
passwd dstuser
db2
connect to DSTDB 
create schema dstuser
GRANT DBADM ON DATABASE TO USER dstuser;
GRANT ALTERIN ON SCHEMA dstuser TO USER dstuser;
GRANT CREATEIN ON SCHEMA dstuser TO USER dstuser;
GRANT DROPIN ON SCHEMA dstuser TO USER dstuser;


测试:
connect to DSTDB  user dstuser
create table test(id char(10))
insert into test values('1')
insert into test values('2')
delete from test where id=1
select * from test

drop table test


查看当前schema命令: db2 "values( current schema)"

设置当前schema命令: set current schema [shemaname]



___________________________________________________________________________________

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Author:   laven54 (lurou)

Email:    laven54@163.com

Blog:      http://blog.youkuaiyun.com/laven54




### 如何在DB2创建用户赋权 #### 用户和组的创建 为了在DB2环境中管理权限,通常需要先在操作系统层面创建相应的用户和组。以下是基于Linux环境的操作示例: ```bash groupadd db2iadm1 # 创建实例管理员组 groupadd db2fadm1 # 创建 fenced 程序管理员组 groupadd test # 创建测试组 useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1 # 创建实例用户 useradd -m -g db2fadm1 -d /home/db2fenc1 db2fenc1 # 创建 fenced 用户 useradd -m -g test -d /home/test test # 创建普通用户 ``` 以上命令用于设置必要的用户和组结构[^1]。 --- #### 数据库授权操作 一旦操作系统级别的用户被成功创建,在DB2数据库内部还需要进一步赋予这些用户的适当角色和权限。具体步骤如下: ##### 1. 连接到目标数据库 假设已经有一个名为`DB2_GCB`的数据库,则可以通过以下方式连接到该数据库: ```sql CONNECT TO DB2_GCB; ``` 如果尚未创建数据库,可以按照下面的方式构建一个新的数据库(以GBK编码为例): ```sql CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32; ``` 此语句定义了一个具有特定字符集和支持中文区域的语言环境的新数据库[^2]。 对于更复杂的场景,可能涉及自定义表空间和其他参数调整,例如: ```sql CREATE DATABASE mydb USING CODESET UTF8 TERRITORY CN COLLATE USING SYSTEM USER TABLESPACE MANAGED BY DATABASE USING ('/path/to/user') CATALOG TABLESPACE MANAGED BY DATABASE USING ('/path/to/catalog'); ``` 这里展示了如何指定不同的文件路径以及分配给各个组件的空间大小[^5]。 ##### 2. 授权过程 完成基础架构搭建之后,就可以着手处理访问控制列表(ACL),即向不同类型的主体授予权限。常见的几种类型包括但不限于SYSADM、DBADM 和 ACCESSCTRL 权限等。 - **授予 SYSADM (System Administrator)** 这是最高级别的一种特权组合形式,意味着获得者能够完全掌控整个系统资源。 ```sql GRANT SYSADM ON DATABASE TO USER db2inst1; ``` - **授予 DBADM (Database Administrator)** 允许某个人员成为某个单独数据库内的管理者身份。 ```sql GRANT DBADM ON DATABASE TO USER test WITH DATAACCESS; ``` 注意这里的 `WITH DATAACCESS` 子句表明除了常规维护职责外还额外开放了读写数据的能力[^3]。 - **其他细粒度权限** 针对某些特殊需求还可以考虑增加更多具体的许可项目比如 SELECT, INSERT INTO 或 UPDATE 特定列等等。 ```sql -- 给予test用户对SCHEMA_NAME模式下所有表格的选择权利 GRANT SELECT ON SCHEMA SCHEMA_NAME TO USER test; -- 让test具备修改MYTABLE这张表里任何字段值的权利 GRANT UPDATE ON MYTABLE TO USER test; ``` 最后记得每次做完变更都要重新验证效果是否符合预期,并定期审查现有策略是否存在安全隐患等问题。 --- ### 总结 综上所述,要在DB2环境下实现有效的用户管理和安全机制,既离不开底层OS层面上精心规划好的账户体系支持,也需要依靠高层SQL语法精确设定各类实体间的互动关系。只有两者紧密结合才能达成理想中的治理状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值