來了乙個需求,比較簡單,需要在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;
--授予使用者讀取表許可權(ecgd.cl_commodity應該是需要授權查詢的表)
grant select on table ecgd.cl_commodity to user dstuser;
passwd dstuser
db2connect 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]
DB2管理非預設 db2 例項
檢視db2所有例項 c documents and settings administrator db2ilist db2c documents and settings administrator db2 get instance 當前資料庫管理器例項是 db2 建立新例項 c documents...
關於DB2的使用(DB2資料命令)
公司所用的資料庫有金倉和db2 首先要用命令視窗直接開啟db2需要在cmd中輸入 db2cmd 1 啟動db2資料庫 db2start 2 連線資料庫 db2 connect to 資料庫名稱 3 建立資料庫 db2 create db 資料庫名稱 4 刪除資料庫 db2 drop db 資料庫名稱...
DB2中db2命令引數說明
db2中db2命令引數說明 a 顯示 sqlca off c 自動落實 on d 檢索並顯示 xml 宣告 off e 顯示 sqlcode sqlstate off f 讀取輸入檔案 off i 顯示 xml 資料並帶有縮排 off l 將命令記錄到歷史記錄檔案中 off m 顯示受影響的行數 o...