ワダです。各種DBMSの権限設定方法について記事を書こうと思います。
今回は、Oracle 12cについてです。

■環境

・OS
Windows10 Pro ビルド番号 1803

・DBMS

DBMS バージョン
Oracle 12.2.0

・DB情報

DB名 スキーマ テーブル 項目名 桁数
PDB TESTUSER01 TEST0001 EMAIL VARCHAR2 100
NAME VARCHAR2 30
AGE NUMBER 3

今回は以下のように、権限が異なる3通りのユーザーを作成するケースを考えてみます。

  1. 「USER01」参照が可能なユーザー
  2. 「USER02」参照、更新が可能なユーザー
  3. 「USER03」参照、更新、構成変更(ALTER)が可能なユーザー

※自分のスキーマにあるオブジェクトからはもともとALTERが可能なので、別スキーマ(TESTUSER01)のテーブルを使用します。

■手順
1. ユーザーを作成。
2. ロールを作成。
3. 2で作成したロールに権限を付与。
4. 3のロールをユーザーに付与。
5. 結果確認。

1. ユーザー作成(接続権限も付与)

※Oracle12c以降アーキテクチャが変わり、プラガブルデータベースに対しユーザーを作成しましたが、ここで思った以上にハマりました。
ユーザーをDebelopment Studio上で作成できないはずはないと思うのですが、今回は方法を調査できずコマンドで作成しました。
このあたりの内容は次回以降に(汗)・・・。

2. ロール作成(Debelopment Studio上で作成可能)

※ロール名について、頭に「C##」を付けた「共通ロール」で作成しています。
プラガブルDB側のロールとして作成してしまうとコンテナDB側から見えず、手順3で権限付与ができませんでした
この理由については長文になってしまいそうなため、今回は先へ進みます・・。

3. ロールに権限付与

4. ユーザーにロールを付与

5. 結果確認

想定通りにできているか、
USER01、USER02、USER03それぞれで下記「test.sql」を試します。

「test.sql」をバッチプログラムから試してみます。

結果(USER01)→SELECTのみ可能。

結果(USER02)→SELECT、INSERTが可能。

結果(USER03)→SELECT、INSERT、ALTER TABLEが可能。

ここまでで、権限の異なる3通りのユーザーを作成できました。

今回は以上です。ありがとうございました。

参考サイト

Oracle12cでユーザを作成する方法

Oracle12cでユーザを作成する方法

スキーマ(ユーザ)作成時に「ORA-65096」~Oracle 12cのアーキテクチャはここが違う~:DBMoto

 

 

TOP
TOP