Windows上のDB2 9.7でローカルdb2adminにすべての特権を付与するにはどうすればよいですか?


10

私の開発ステーションには、OS Windows XP Professional Edition、Service Pack 3を搭載したラップトップがあります。

Express-CエディションのIBM DB2 UDB 9.7フィックスパック4をダウンロードしてインストールしました。

DB2のローカルインストールのローカルデータベース管理者として使用しているdb2adminというローカルWindowsアカウントがあります(開発者専用)。

コマンドウィンドウを実行すると、問題なく以下を実行できます。

db2 attach to db2 user db2admin using xxxxxxxxxx

これにより、DB2というインスタンスに接続できます。

データベース作成コマンドを実行できます。

次に、データベースに接続して、DB2のdb2adminアカウントにすべての特権を付与します。

db2 CONNECT TO MYDB;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

しかし、それを実行すると、実際のWindowsユーザーアカウント(synprgcma)にはユーザーdb2adminに権限を付与する権限がないことがDB2から通知されます。

したがって、2番目のスクリプトを次のように変更すると、

db2 CONNECT TO MYDB USER db2admin USING xxxxxxxx;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

次に、DB2は、db2adminがそれ自体に対して権限を取り消したり付与したりできないことを通知します(実際には、IDがそれ自体に対して権限を取り消したり付与したりすることはできません)。

だから私は困惑しています。以前のDB2のインストール(9.5、およびどのフィックスパックを使用していたか覚えていません)では、この問題はありませんでした。

ローカル管理者アカウントに必要な権限を付与するにはどうすればよいですか?次に必要なbindコマンドを実行するために、これが必要だと思います。

db2 CONNECT TO MYDB;
db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 20;
db2 CONNECT RESET;

任意の助けいただければ幸いです。

編集:これに関連する次のリンクの一部を見つけました。それがどのように機能するかはまだわかりませんが、少なくとも私はいくつかのドキュメントを見つけました。

回答:


5

私の質問に対する私の編集の最後の上記のリンクに基づいて、私は私の答えを見つけました。システムへのログオンはLDAPからであり、グループを制御できないため、システムアカウントを微調整できません。

だから私は次のことをしました:

  1. DB2 GUIを開きました(この方法が最も簡単でした)。
  2. db2adminとして目的のデータベースに接続しました。
  3. ユーザーとしてデータベースに私のログオンを追加しました。
  4. そのID(私のID)に対するすべての権限を付与します。
  5. 切断。
  6. IDとして目的のデータベースに接続します。
  7. すべての権限をdb2adminに付与します。
  8. 切断。

出来上がり!db2adminがすべての権限としてログオンします。

編集:DB2で興味深いことを行う方法を学ぶのに役立ったので、上記はそのままにしておきます。ただし、インスタンス所有者に付与されたDATAACCESSおよびACCESSCTRL権限を持つDBADM / SECADM(私の場合はdb2admin id)には、データベースとの対話に必要なすべての権限があることを知りました。実際には、スクリプトの上記の許可の行をコメント化しただけかもしれません。これらは、古いバージョンのDB2に対して実行されたスクリプトから残されました。また、データベースBからデータベースAに復元した後にインスタンス所有者DBADMが必要な場合も、レジストリー変数DB2_RESTORE_GRANT_ADMIN_AUTHORITYをYESに設定するのが最も簡単です(フィックスパック2以降で使用可能)。その後、インスタンス所有者にDBADMを付与する必要はありません。これは、インスタンスに復元されたデータベースに自動的に付与されます。


DB2 GUIの意味がわからない。私たちが試すことができるコマンドラインバージョンはありますか?

@ sunk818-コマンドラインでも手順は同じです。バージョン9.7以降のセキュリティに関しては、DB2がどのように機能するかと関係があります。
Chris Aldrich

私の懸念は、データベースを作成するためのSYSADMアクセスを持っていることと関係していました...おそらく、間違った質問にアクセスしたことがあります。;)

SYSADMには、常にデータベースを作成する機能があります。SYSCTRLも同様です。
Chris Aldrich、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.