[Oracle初心者運用メモ]テーブルの閲覧権限ユーザ作成

客先のシステムで使用しているOracle11gのあるテーブルを
別システムからも参照したいということで
更新はできない閲覧権限ユーザを作成することになりました。

別ユーザを作成した場合、スキーマも別になってしまうため
下記のような参照となってしまいます。

「masterA」テーブル作成ユーザ・・・aaa
閲覧権限を与えた別ユーザ・・・bbb

bbbが「masterA」を参照するには下記のように、
スキーマ名.テーブル名で参照する必要がある。

SELECT * FROM aaa.masterA;
別ユーザからもスキーマ名なしで参照できるようシノニムを作成し
下記の手順で閲覧権限ユーザを作成しました。

1.シノニムをつくる
CREATE PUBLIC SYNONYM masterA FOR aaa.masterA;

2.テーブルにpublicでselect権限を付与する
GRANT SELECT ON masterA TO PUBLIC;

3.ユーザを作成する
CREATE USER bbb(ユーザ名)
IDENTIFIED BY パスワード
DEFAULT TABLESPACE ユーザ領域名
TEMPORARY TABLESPACE 一時領域名;

4.ユーザに権限を付与する
GRANT CONNECT, RESOURCE TO bbb;
⇒接続とcreate系のロール(RESOURCE)を付与する

GRANT SELECT ANY TABLE TO bbb;
⇒select権限を付与する