PR

 今回は,データベースユーザーの作成方法と,ユーザーに対して各種の権限を付与する方法を解説しましょう。

 データベースの利用者つまりデータベースユーザーは,「Enterprise Manager(以下EM)」またはSQL文を使用して作成することができます。いずれも,次の項目を指定します。

  • ユーザー名
  • 認証方式
  • パスワード
  • デフォルト表領域
  • 一時表領域
  • 表領域割り当て(QUOTA)
  • アカウントロック
  • プロファイル

 ユーザーを作成するときは,ユーザー名と認証方式を必ず指定する必要があります。そのほかの項目は,省略時解釈値が用意されているため,省略することが可能です。

 ユーザー名は,Oracleの命名規則(注1)に従わなければいけません。認証方式で「パスワード認証」を選択した場合は,必ずパスワードも指定します。

 デフォルト表領域の省略時解釈値は「USERS」(という名前の表領域)です(表領域は「Bronze DBA編 第4回 記憶領域管理」を参照)。デフォルト表領域とは,ユーザーが表などのオブジェクトを作成する場合の表領域に対する省略時解釈値のことです。つまり,CFREATE TABLE文を実行する際に,どこの表領域にその表を格納するのかを明示的に指定しない場合に適用される表領域です。

 一時表領域の省略時解釈値は「TEMP」(という名前の表領域)です。一時表領域とはORDER BYなどのソート処理がメモリーで処理しきれないときに使用される,一時的な領域(一時セグメント)の格納場所のことです。

 ユーザーが一時表領域に対して割り当て可能なサイズは無制限です。しかし,前述したデフォルト表領域などの,一時表領域以外の表領域に関しては,明示的に指定しない限り,割り当て可能なサイズは0(ゼロ)バイトです。従って,デフォルト表領域やそのほかの表や索引を格納した表領域に対しては,割り当て設定が必要です。それが,表領域割当て(QUOTA)です。

 アカウントロックは,アカウントをロックするかどうかを指定します。ユーザーはアカウントをロックされると,ログインできなくなります。ユーザー作成後すぐに使用する必要がなければ,アカウントをロックしておきます。最後のプロファイルの省略時解釈値は,DEFAULTです。プロファイルについては,最後に解説します。

GRANT文でシステム権限を付与する

 では,SQL文を使用して,ユーザーを作成をしてみましょう(図1)。

図1●SQL文を使用したユーザー作成
図1●SQL文を使用したユーザー作成
[画像のクリックで拡大表示]

 ユーザーを作成しても,そのユーザーがデータベースにログインできるとは限りません。データベースにログインするためには,「データベースに対してログインする」権限が与えられている必要があります。

 Oracleでは,次の権限をユーザーに与えることができます。

  • システム権限:データベースに対して,どのような操作を許可するのか
  • オブジェクト権限:データベースオブジェクト(表,ビュー,順序,プロシージャ)に対して,どのような操作を許可するのか

 「データベースに対してログインする」権限はシステム権限の1つで,「CREATE SESSION」権限と言います。

 システム権限は,GRANT文で付与することができます。図1で作成したユーザーに,「CREATE SESSION」権限を与えてみましょう(図2)。

図2●「CREATE SESSION」権限を付与する
図2●「CREATE SESSION」権限を付与する
[画像のクリックで拡大表示]

 このように,GRANT文を使えば,個々の権限をユーザーごとに与えることができます。しかし,それでは,権限の管理は煩雑になります。