intro to Oracle DB 5

§12. ユーザー

ユーザーを作成するには次の五つの情報が必要

  1. ユーザ名
    30文字以内(半角英数字)
    Oracleの予約語は使用できない
  2. パスワード
    30文字以内(半角英数字)
    Oracleの予約語は使用できない
  3. デフォルト表領域
    作成するユーザーがデフォルトで使用する領域.これを指定しないと,SYSTEM表領域に書き込まれることになる.ここにはOracleの構成情報が入っているので避ける.
  4. クォータ
    ユーザーが表領域をどれだけ使用できるかを定義する.設定しないと際限なく使えることになる.
  5. デフォルト一時表領域
    特に指定しなくて良い.指定しなければ,Oracle内で共通の一時表領域を使用できる.
  • CREATE TABLESPACE
    表領域の作成はCREATE TABLESPACE文で行う.

    CREATE TABLESPACE <表領域> DATAFILE '<データファイル名>' SIZE M;

    データファイル名は絶対パスで指定する.DBFファイルが出来ていれば作成成功.

  • CREATE USER
    ユーザーの作成はCREATE USER文で行う.

    CREATE USER <ユーザー名> IDENTIFIED BY <パスワード>
    [ DEFAULT TABLESPACE <表領域名>]
    [ TEMPORARY TABLESPACE <一時表領域名>]
    [ QUOTA <>M ON <対象表領域名>];

    ユーザー情報の確認はdba_usersデータディクショナリビューを使って確認することができる

§13. 権限とロール

権限には大きく次の2種類がある.

  • システム権限
    Oracleを構築したり,構成情報の変更,テーブルの作成など運用管理する際に必要な権限

    • CREATE SESSION:  Oracleへ接続するための権限
    • ALTER DATABASE: 構成情報の変更
    • CREATE TABLE: テーブルの作成

    特にCREATE SESSION権限がないとOracleに接続できないため,真っ先にこれを与える必要がある.

  • オブジェクト権限
    他のユーザーが所有するテーブルや索引などのオブジェクトに対して「特定の操作を実行する」ための権限.システム権限とは異なり,オブジェクト権限はオブジェクトの所有者が他のユーザーに付与する.

実際に権限を与える操作を見ていく.

  • GRANT: 権限の付与
    • システム権限
      GRANT <システム権限名> [, <システム権限名>...]
      TO <ユーザー名> [, <ユーザー名>...]
      [WITH ADMIN OPTION];

      システム権限はほぼテーブルに作用する操作名に対応する.例えば
      テーブルから行を検索する権限: SELECT
      テーブルに行を追加する権限:INSERT
      テーブルの構成を変更する権限:ALTER TABLE
      などである.
      WITH ADMIN OPTIONは権限が付与されたユーザーは,その権限をさらに他のユーザーに付与できる(admin権限)
      システム権限の確認はuser_sys_privsデータディクショナリビューを使って確認することができる.データベース全体の情報を確認したい場合はdba_sys_privsデータディクショナリビューを使うと良い.

    • オブジェクト権限
      GRANT <オブジェクト権限> [ ( <列名> ) ]
            [,<オブジェクト権限> [ ( <列名> ) ]...]
      ON [<ユーザー名>.]<オブジェクト名>
      TO <ユーザー名> [, <ユーザー名>...]
      [WITH GRANT OPTION];

      WITH GRANT OPTIONは権限が付与されたユーザーは,その権限をさらに他のユーザーに付与できる(admin権限)
      ここで大事なことは,ONに続くオブジェクト名の指定ではほとんどの場合他のユーザーが所有するオブジェクトを指定することになるので<ユーザー名>を指定することである.
      システム権限の確認はuser_tab_privsデータディクショナリビューを使って確認することができる.
      なお,権限を取り消すにはREVOKE文を使う.

ところで,実際のユースケースでは複数の権限をまとめて管理したい場合がある.ユーザーが数百人いて,その一人一人に一つ一つ細かい権限を与えることはとても辛い.

そこでロールの必要性が出てくる.ロールとは,複数の権限を一つにまとめたもので,システム権限やオブジェクト権限だけでなく,作成してある別のロールを含めることもできる.
標準で用意されているロールは例えば

  • CONNECT: CREATE SESSIONシステム権限
  • RESOURCE: CREATE TABLEシステム権限, CREATE SEQUENCEシステム権限等8つのシステム権限
  • DBA: 全てのシステム権限(管理者用)

などがある.自分で作成する場合は

  • CREATE ROLE
    CREATE ROLE <> [ IDENTIFIED BY <> | NOT IDENTIFIED ];

    ロールを作成する(中身は空).dba_rolesデータディクショナリビューでロールの確認ができる.
    ロールに権限を付与したり削除するのは,システム権限・オブジェクト権限同様にGRANTやREVOKEを用いる.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中