- - PR -
ビュー(VIEW)に対するアクセス権限(GRANT)の付与の仕方についてアドバイスください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 ] | ||||
|
投稿日時: 2009-02-18 04:25
シノニムってデフォルトでは作成ユーザしか権限もってなかった気がしますが C01.V_SEITOに対するSELECT権限をC01は持っていますか? | ||||
|
投稿日時: 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