DB2沒有數據庫級別的用戶,只能使用操作系統級別的用戶;所以要新建DB2用戶,要先在數據庫服務器上新建操作系統用戶。
例如要給數據庫新建一個 dcusr
用戶
首先用root用戶登錄數據庫服務器:
- 添加用戶:
useradd dcusr
- 修改
dbusr
的密碼:passwd dcusr
- 切換用戶到
db2inst1
orpusinst1
(DBA權限的用戶,創建數據庫的實例用戶,一般名稱爲db2inst1):su - pusinst1
- 連接到數據庫:
db2 connect to db_name
- 賦予
dcusr
連接數據庫的權限 :db2 grant connect on database to user dcusr
授予數據庫級特權權限參數有:
CONNECT: 用戶可以連接數據庫
CREATETAB: 用戶可以在數據庫中創建表
LOAD: 用戶可以將數據裝載進表中
BINDADD: 用戶可以使用 BIND 命令在數據庫中創建包
CREATE_NOT_FENCED: 用戶可以創建 unfenced 用戶定義函數(UDF)
IMPLICIT_SCHEMA: 用戶可以在數據庫中隱式地創建模式,而不需要使用 CREATE SCHEMA 命令
CREATE_EXTERNAL_ROUTINE: 用戶可以創建供應用程序和數據庫的其他用戶使用的過程
SECADM:安全性管理員
Dbadm:DBADM 用戶對一個數據庫有幾乎完全的控制能力。DBADM 用戶不能執行某些維護或管理任務
給用戶賦予其他權限,例如給某個Schemal下的表賦權
- 給
dcusr
賦予DB2WL
模式下的表table_name select和insert權限:db2 grant select,insert on table DB2WL.table_name to user dcusr
- 使用
dbusr
用戶連接到數據庫, 測試權限:db2 connect to db_name user dcusr using password
- 用語句拼出來增刪改查賦權語句:
select 'GRANT SELECT,UPDATE,INSERT,DELETE ON TABLE '||TABSCHEMA||'.'||TABNAME||' TO USER dcusr;' from syscat.tables;
GRANT SELECT ON TABLE DB2WL.TB_NAME TO USER DCUSR WITH GRANT OPTION;
GRANT INSERT ON TABLE DB2WL.TB_NAME TO USER DCUSR WITH GRANT OPTION;
GRANT DELETE ON TABLE DB2WL.TB_NAME TO USER DCUSR WITH GRANT OPTION;