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 に付与されます。
コマンド実行例:
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 に付与されます。
コマンド実行例:
- (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 レコードが選択されました。
- (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 レコードが選択されました。
[{"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"}]
Was this topic helpful?
Document Information
Modified date:
26 August 2023
UID
swg21571939