IBM Support

[Db2] 制限つきデータベースで IMPORT および EXPORT を実行するのに必要な権限を付与する方法

Question & Answer


Question

CREATE DATABASE コマンドに RESTRICTIVE オプションを付与し、制限つきデータベースを作成しました。
このデータベースで特定のユーザーに対して、IMPORT および EXPORT を実行するために必要な権限を付与する方法を教えてください。

Cause

RESTRICTIVE オプションを指定してデータベースを作成すると、特殊グループ PUBLIC に対する権限や特権は付与されません。
このため、通常は PUBLIC に対して付与されている個々の特権を個別に付与する必要があります。
CREATE DATABASE コマンド
RESTRICTIVE
    RESTRICTIVE パラメーターを使用すると、restrict_access データベース構成パラメーターが YES に設定されるため、特権や権限が自動的に PUBLIC に付与されることがなくなります。
特定の表の参照権限を付与する方法については、以下の Technote を参照してください。
なお、この文書は EXPORT/IMPORT を行うユーザーは、すでに表への参照特権を持っており、コマンド行プロセッサーのパッケージ (db2ubind.lst に含まれる) の実行特権を持っているものと仮定しています。
それぞれの特権の付与方法は上の Technote を参照してください。

Answer

IMPORT および EXPORT の実行には SQLU* パッケージが使用されますので、IMPORT および EXPORT を実行するユーザーに対して、これらのパッケージが依存するオブジェクト (システム・カタログ表やビュー、表関数など) に対する SELECT 特権や EXECUTE 特権を付与する必要があります。
パッケージが依存するオブジェクトは Db2 のバージョンやフィックスパックレベルによって変わる可能性があるため、以下の SQL を実行してご確認ください。
db2 "select char(bschema,30)schame,char(bname,30)name,btype from syscat.packagedep where pkgname like 'SQLU%'and btype in ('T','V','F')"
実行例
db2 "select char(bschema,30)schame,char(bname,30)name,btype from syscat.packagedep where pkgname like 'SQLU%'and btype in ('T','V','F')"
SCHAME                         NAME                           BTYPE
------------------------------ ------------------------------ -----
SYSIBM                         SYSTABCONST                    T
SYSCAT                         CONSTDEP                       V
SYSIBM                         SYSMODULES                     T
SYSIBM                         SYSCONSTDEP                    T
SYSIBM                         SYSDUMMY1                      V
SYSPROC                        BASE_TABLE                     F
SYSIBM                         SYSAUDITPOLICIES               T
SYSIBM                         SYSCOLLATIONS                  T
SYSIBM                         SYSTABLES                      T
SYSIBM                         SYSTABLES                      T
SYSCAT                         TABLESPACES                    V
SYSIBM                         SYSSTOGROUPS                   T
SYSIBM                         SYSTABLESPACES                 T
SYSIBM                         SYSCOLUMNS                     T
  14 record(s) selected.
実行結果のうち、BTYPE が T および V のものについては SELECT 特権、F のものについては EXECUTE 特権を付与します。
EXPORTiIMPORT はパッケージに登録された静的 SQL だけでなく、動的 SQL を実行することもあります。このため、以下の表およびビューへの SELECT 特権も付与してください。
SYSIBM.INDEXCOLUSE
SYSCAT.INDEXES
SYSCAT.COLUMNS
特権を付与する方法
db2 grant select on table <表名> to user <ユーザー名>
db2 grant execute on function <関数名> to user <ユーザー名>
実行例
db2inst1 ユーザーに対して SYSIBM.SYSTABLES 表の SELECT 特権を付与するには、以下の SQL を実行します。
db2 "GRANT SELECT ON TABLE SYSIBM.SQLTABLES TO USER DB2INST1"
db2inst1 ユーザーに対して SYSPROC.BASE_TABLE 表関数の EXECUTE 特権を付与するには、以下の SQL を実行します。
db2 "GRANT EXECUTE ON FUNCTION SYSPROC.BASE_TABLE(VARCHAR(),VARCHAR()) TO USER DB2INST1"

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkfAAE","label":"Data Movement"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"},{"code":"PF055","label":"zLinux"}],"Version":"10.1.0;10.5.0;11.1.0;11.5.0;9.7.0;9.8.0"}]

Document Information

Modified date:
23 August 2023

UID

ibm16495335