IBM Support

[Db2] DATAACCESS 権限を保持していても SQL が SQL4707N で失敗することがあります

Question & Answer


Question

実行ユーザーに DATAACCESS 権限を付与しているにもかかわらず、照会から SQL4707N が戻されデータにアクセスできません。
$ db2 "select * from test1"
SQL4707N ワークロード "SYSDEFAULTUSERWORKLOAD" は、データベースへのアクセスが許可されていないか、
あるいは無効になっているため、 要求を保守できません。理由コード: "" SQLSTATE=5U020

Answer

Db2 9.5以降、すべての接続はデフォルトのユーザー・ワークロード SYSDEFAULTUSERWORKLOAD に割り当てられます。

CREATE DATABASE コマンドで RESTRICTIVE オプションを指定した場合、実行ユーザーがユーザー・ワークロード SYSDEFAULTUSERWORKLOAD をはじめ、どのワークロードについても USAGE 特権を持っていません。SQL エラー (SQL4707N) が戻されますので、実行ユーザーに USAGE 特権を明示的に付与する必要があります。

GRANT USAGE ON WORKLOAD ステートメントを使用するためには、V9.5 では SYSADM または DBADM 権限、V9.7 では ACCESSCTRL、SECADM または WLMADM 権限が必要です。

なお、CREATE DATABASE コマンドで RESTRICT オプションを指定しないでデータベースを作成する場合は、データベース作成時に SYSDEFAULTUSERWORKLOAD の USAGE 特権が PUBLIC に付与されます。


コマンド実行例:
  1. (A) CREATE DATABASE コマンドで RESTRICTIVE オプションを指定した場合
    $ db2 create db sample restrictive
    DB20000I  CREATE DATABASE コマンドが正常に完了しました。
    
    $ db2 connect to sample
    
       データベース接続情報
    
     データベース・サーバー                                   = DB2/AIX64 9.7.2
     SQL 許可 ID                                              = INST
     ローカル・データベース別名                               = SAMPLE
    
    $ db2 "create table test.test1(col1 int)"
    DB20000I  SQL コマンドが正常に完了しました。
    
    $ db2 "select * from syscat.dbauth"
    
    GRANTOR                                                                                                                          GRANTORTYPE GRANTEE                                                                                                                          GRANTEETYPE BINDADDAUTH CONNECTAUTH CREATETABAUTH DBADMAUTH EXTERNALROUTINEAUTH IMPLSCHEMAAUTH LOADAUTH NOFENCEAUTH QUIESCECONNECTAUTH LIBRARYADMAUTH SECURITYADMAUTH SQLADMAUTH WLMADMAUTH EXPLAINAUTH DATAACCESSAUTH ACCESSCTRLAUTH
    -------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------- --------- ------------------- -------------- -------- ----------- ------------------ -------------- --------------- ---------- ---------- ----------- -------------- --------------
    SYSIBM                                                                                                                           S           INST                                                                                                                              U           N           N           N             Y         N                   N              N        N           N                  N              Y               N          N          N           Y              Y
    
      1 レコードが選択されました。
    
    
    $ db2 grant DATAACCESS, CONNECT on database to test
    DB20000I  SQL コマンドが正常に完了しました。
    
    $ db2 "select grantee, createtabauth, dbadmauth, connectauth, dataaccessauth from syscat.dbauth"
    
    GRANTEE             CREATETABAUTH DBADMAUTH CONNECTAUTH DATAACCESSAUTH
    ------------------- ------------- --------- ----------- --------------
    INST                N             Y         N           Y
    TEST                N             N         Y           Y
    
      2 レコードが選択されました。
    
    $ db2 connect to sample user test using test
    
       データベース接続情報
    
     データベース・サーバー                                   = DB2/AIX64 9.7.2
     SQL 許可 ID                                              = TEST
     ローカル・データベース別名                               = SAMPLE
    
    $ db2 "select * from test.test1"
    SQL4707N  ワークロード "SYSDEFAULTUSERWORKLOAD"
    は、データベースへのアクセスが許可されていないか、あるいは無効になっているため、
    要求を保守できません。理由コード: ""  SQLSTATE=5U020
    
    $ db2 grant usage on workload SYSDEFAULTUSERWORKLOAD to user test
    DB20000I  SQL コマンドが正常に完了しました。
    
    $ db2 terminate
    DB20000I  TERMINATE コマンドが正常に完了しました。
    
    $ db2 connect to sample user test using test
    
       データベース接続情報
    
     データベース・サーバー                                   = DB2/AIX64 9.7.2
     SQL 許可 ID                                              = TEST
     ローカル・データベース別名                               = SAMPLE
    
    $ db2 "select * from test.test1"
    
    COL1
    -----------
    
      0 レコードが選択されました。
    
  2. (B) CREATE DATABASE コマンドで RESTRICTIVE オプションを指定しない場合
    $ db2 create db sample
    DB20000I  CREATE DATABASE コマンドが正常に完了しました。
    
    $ db2 connect to sample
    
       データベース接続情報
    
     データベース・サーバー                                   = DB2/AIX64 9.7.2
     SQL 許可 ID                                              = INST
     ローカル・データベース別名                               = sample
    
    $ db2 "create table test.test1(col1 int)"
    DB20000I  SQL コマンドが正常に完了しました。
    
    $ db2 "select * from syscat.dbauth"
    
    GRANTOR                                                                                                                          GRANTORTYPE GRANTEE                                                                                                                          GRANTEETYPE BINDADDAUTH CONNECTAUTH CREATETABAUTH DBADMAUTH EXTERNALROUTINEAUTH IMPLSCHEMAAUTH LOADAUTH NOFENCEAUTH QUIESCECONNECTAUTH LIBRARYADMAUTH SECURITYADMAUTH SQLADMAUTH WLMADMAUTH EXPLAINAUTH DATAACCESSAUTH ACCESSCTRLAUTH
    -------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------- --------- ------------------- -------------- -------- ----------- ------------------ -------------- --------------- ---------- ---------- ----------- -------------- --------------
    SYSIBM                                                                                                                           S           INST                                                                                                                              U           N           N           N             Y         N                   N              N        N           N                  N              Y               N          N          N           Y              Y
    SYSIBM                                                                                                                           S           PUBLIC                                                                                                                           G           Y           Y           Y             N         N                   Y              N        N           N                  N              N               N          N          N           N              N
    
      2 レコードが選択されました。
    
    $ db2 "select grantee, createtabauth, dbadmauth, connectauth, dataaccessauth from syscat.dbauth"
    
    GRANTEE             CREATETABAUTH DBADMAUTH CONNECTAUTH DATAACCESSAUTH
    ------------------- ------------- --------- ----------- --------------
    INST                N             Y         N           Y
    PUBLIC              Y             N         Y           N
    
      2 レコードが選択されました。
    
    $ db2 connect to sample user test using test
    
       データベース接続情報
    
     データベース・サーバー                                   = DB2/AIX64 9.7.2
     SQL 許可 ID                                              = TEST
     ローカル・データベース別名                               = SAMPLE
    
    $ db2 "select * from test.test1"
    
    COL1
    -----------
    
      0 レコードが選択されました。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"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":"a8m0z00000006paAAA","label":"Administrative Tools-\u003EWLM"},{"code":"a8m500000008PlOAAU","label":"Security and Plug-Ins-\u003EAuthorization and Privilege"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
26 August 2023

UID

swg21571939