- PR -

ビュー(VIEW)に対するアクセス権限(GRANT)の付与の仕方についてアドバイスください

1
投稿者投稿内容
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2009-02-17 22:04
お世話になっています。

以下の手順で権限設定をしたのですが、ORACLEエラーが発生しました。

ユーザA01:ビューV_SEITOを既に所有。
     V_SEITO内ではユーザB01所有のテーブルMEIBOにアクセスしています。
     ユーザA01でV_SEITOを検索することは可能です。(当たり前ですが)

ユーザC01:@ユーザA01からV_SEITOへの権限を付与しました(GRANT SELECT ON A01.V_SEITO TO C01)
     AユーザA01からMEIBOへの権限を付与しました (GRANT SELECT ON B01.MEIBO TO C01)

BユーザA01でシノニムを作成しました
CREATE SYNONYM C01.V_SEITO FOR A01.V_SEITO

その後、ユーザC01でV_SEITOを検索すると、
 ORA-01031:権限が不足しています エラーが発生してしまいます。
SQLは「select * from V_SEITO」です。

ロールは使っていませんし、ユーザC01からMEIBOを直接検索することもできます。
GRANT実行時にwith grant optionは使っていません。
V_SEITOの中ではcount(*)を使っているものの、SQL自体はシンプルな内容です。
ビューの中でアクセスしているテーブルに対する権限はいらない(A)とのことですが、一応定義しています。

エラーの原因は何と考えられるでしょうか?
ご存知の方がいましたら教えてください。

[ メッセージ編集済み 編集者: みゅう 編集日時 2009-02-18 00:19 ]
デューン
大ベテラン
会議室デビュー日: 2004/04/21
投稿数: 174
お住まい・勤務地: Tokyo
投稿日時: 2009-02-18 04:25
引用:

BユーザA01でシノニムを作成しました
CREATE SYNONYM C01.V_SEITO FOR A01.V_SEITO



シノニムってデフォルトでは作成ユーザしか権限もってなかった気がしますが
C01.V_SEITOに対するSELECT権限をC01は持っていますか?
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2009-02-18 22:52
デューンさん、ありがとうございます。

原因がわかりました。

事前準備である ユーザB01からユーザA01にMEIBOへの権限を付与するときに、
with grant optionをつけていないことが原因でした。

CユーザB01で実行
GRANT SELECT ON B01.MEIBO TO A01 with grant option

これを実行することでV_SEITOを検索できました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)