DB2用戶表批量授權
一、新建用戶
[root@localhost ~]# passwd ghan
Changing password for user ghan.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# su - db2inst2
[db2inst2@localhost ~]$ db2 connect to ghan user ghan
輸入 ghan 的當前密碼:
數據庫連接信息
數據庫服務器 = DB2/LINUXX8664 9.7.5
SQL 授權標識 = GHAN
本地數據庫別名 = GHAN
二、訪問db2int2.t2表報錯
[db2inst2@localhost ~]$ db2 "select count(1) from db2inst2.t2"
SQL0551N "GHAN" 不具有對對象 "DB2INST2.T2" 執行操作 "SELECT"
的必需權限或特權。 SQLSTATE=42501
[db2inst2@localhost ~]$ db2 connect to ghan
數據庫連接信息
數據庫服務器 = DB2/LINUXX8664 9.7.5
SQL 授權標識 = DB2INST2
本地數據庫別名 = GHAN
三、生成授權腳本
[db2inst2@localhost ~]$ db2 -x +o -z commands.sql "select 'grant select,insert, update, delete on table ' || trim(tabschema) || '.' || trim(tabname) || ' to user ghan;' from syscat.tables where type = 'T'"
四、修改指寫表授權
[db2inst2@localhost ~]$ vi commands.sql
****略***
五、執行授權語句
[db2inst2@localhost ~]$ db2 -tsvf commands.sql
grant select,insert, update, delete on table DB2INST2.EMPL to user ghan
DB20000I SQL 命令成功完成。
grant select,insert, update, delete on table DB2INST2.EMPLDD to user ghan
DB20000I SQL 命令成功完成。
grant select,insert, update, delete on table DB2INST2.STAFF to user ghan
DB20000I SQL 命令成功完成。
grant select,insert, update, delete on table DB2INST2.T1 to user ghan
DB20000I SQL 命令成功完成。
[db2inst2@localhost ~]$ db2 connect to ghan user ghan
輸入 ghan 的當前密碼:
數據庫連接信息
數據庫服務器 = DB2/LINUXX8664 9.7.5
SQL 授權標識 = GHAN
本地數據庫別名 = GHAN
六、測試授權結果
[db2inst2@localhost ~]$ db2 "select count(*) from db2inst2.t1"
1
-----------
4
1 條記錄已選擇。