2010年4月9日金曜日

メインフレームLinuxでDB2(3) - DBADM権限の付与

前々回では、x86 linuxにDB2クライアントをインストールしました。zfedora(feodra11/s390x)上のDB2インスタンス(db2inst1)に接続する際には、インスタンスオーナーのユーザーIDとパスワードを使用したわけですが、今回はインスタンスオーナーではないユーザに"SAMPLE"データベースへDBADM権限を与えて、そのユーザーのIDとパスワードでデータベースに接続してみます。DBADM権限は、インスタンス内のあるデータベースに対するアクセス権で、インスタンスオーナーのSYSADM権限よりは限定された権限です。 DB2における特権・権限については、ここにまとめられています。

1. DBADM権限を与えるユーザーをzfedora上に作成する。
必要に応じてユーザーを作成します。今回はzfedora上にtestdbユーザーを作成しました。適宜パスワードも設定しておきます。
-bash-4.0# adduser testdb
-bash-4.0# passwd testdb
Changing password for user testdb.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
2. testdbユーザーにDBADM権限を与える。
インスタンスオーナー(db2inst1)でzfedoraにログインし、SQLのGRANT文でtestdbユーザーにDBADM権限を与えます。
[db2inst1@zfedora ~]$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXZ64 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

[db2inst1@zfedora ~]$ db2 "GRANT DBADM ON DATABASE TO USER testdb"
DB20000I  The SQL command completed successfully.
3. x86 Linuxからzfedora上の"sample"データベースに接続する。
"testdb"ユーザーで"SAMPLE"データベースに接続します。
[hercules@ce01 ~]$ db2 connect to sample user testdb using YYYYYYYY

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXZ64 9.7.1
 SQL 許可 ID                                              = TESTDB
 ローカル・データベース別名                               = SAMPLE
4. "SAMPLE"データベース内のdepartmentテーブルにSELECTを発行してみる。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"
SQL0204N  "TESTDB.DEPARTMENT" は未定義の名前です。  SQLSTATE=42704
「"TESTDB.department"は未定義です」というエラーが表示されました。"TESTDB"が暗黙のスキーマ名として指定されているようです。"department"の代わりに、"DB2INST1.department"としてみると、SELECTの結果が戻されるようになりました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM DB2INST1.department" 

1
-----------
         14

  1 レコードが選択されました。
カレントスキーマを"DB2INST1"に変更します。
[hercules@ce01 ~]$ db2 "SET CURRENT SCHEMA='DB2INST1'"
DB20000I  SQL コマンドが正常に完了しました。
今度は、スキーマ名を指定しなくても"DB2INST1"スキーマのdepartmentテーブルに対するSELECTの結果が戻されました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"

1
-----------
         14

  1 レコードが選択されました。
今回は、インスタンスオーナー以外のユーザーにDBADM権限を与え、そのユーザーで"SAMPLE"データベースへの接続とSQLの発行を行ってみました。

0 件のコメント:

コメントを投稿