Oracleユーザ&ロールの作成と設定
0.改訂履歴
- 1996.11.27 初版
- 1996.11.28 create user文に間違いがあった.
- 2001.01.15 テーブルスペースについて追加
1.はじめに
Oracle用のユーザを作成するにはいくつかの方法がある. ここではOracle Security Manager
7.2.2.4.1(以降Security Manager)を用いた方法を説明する.
Security ManagerはOracleの管理者用クライアントソフトを導入する必要が有る. 導入の方法はドキュメント「Oracle 7 Client for Windows95
Install」を参照.
その後,コマンドラインでの作成方法も追加した.
2.ステップの確認
ユーザを作成したときに考えなければならないのは,そのユーザに与えられた権限を設定する必要が有る. この権限はOracleでは「ロール」と呼ばれるグループ管理が可能である.
まず,このロールを作成した後に,ユーザを作成し,ユーザにロールを与える事で権限を付与する手順となる.
ここでは,自分が作成したテーブルへの参照・更新・削除を可能とする権限のロール"testrole"を作成し,ユーザ"testuser"を作成しロールを付与する例で進める.
3.ロールの作成
3.1 既存のロールの確認
Oracleがインストールされた状態で作成されるロールが存在する. 以下にその役割の説明をする.
ロール名 主な役割 CONNECTエンドユーザとして十分なシステム権限. create session,alter session, create database link,create sequence,create cluster, create synonym,create table,create viewRESOURCEアプリケーションデザイナ(開発者)に十分なシステム権限. create cluster,create procedure,create sequence, create table,create triggerDBA管理者用の with admin option付き全てのシステム権限.EXP_FULL_DATABASEエクスポート(バックアップ)権限. select any table.backup any table.insert,delete,update on sys.incvid,sys.incfil,sys.incexpIMP_FULL_DATABASEインポート(リストア)権限. become user
Oracle7には,これらの既存のロールについての説明は一切無かった.いや,実際には有ったが「昔のバージョンとの互換性を保つために存在している」としか,記述されていない. 将来的に無くなる可能性がある.
このこのロールを作成するSQL文はファイルとして格納されており,Oracle 7.2 for NTだと\ORANT\RDBMS72\ADMIN\SQL.BSQ,UNIX版だと$ORACLE_HOME/rdbms/admin/sql.bsqに格納してある.
参考までに内容は「SQLBSQ.txt」にあるので参照されたい.
通常のユーザを作るには,CONNECTロールを与えていれば良いと考えられる.
また,あるプロジェクトで開発者をターゲットにするならば,RESOURCEを持ったロールを作っておけば良いと考えられる.
ここでは,新規ロール"testrole"を作成し,RESOURCEロール権限を渡す.
3.2 ロールの作成
ロールを作成するには,2通りの方法がある. 方法といってもSecurity Managerを使ってGUIベースで行なうか,SQL文を書くかの違いである.
3.2.1 Security Managerを使用してロールを作成
- [Security Manager]を起動する.
- [データベースのログオン]画面で管理者権限のある[ユーザ](internal,system),[パスワード],および[データベース名](Net Eazy Configurationで作成した別名でも可能)を入力し,[OK]ボタンを押す.
- [ロール]タブを選択する.
- [新規ロール]ボタンを押す.
- [新規ロール名]に
"testrole"を入力し,,このロールに対する[パスワード],[パスワード確認]をそれぞれ入力する. パスワードの入力は必須ではない. - [ロールと権限を今割り当てるには「はい」を押してください]とダイアログで表示されるので,[はい]ボタンを押す.
- [ロール変更]画面が表示される.
- [権限とロール]画面タブ内の[表示]フレームにある[ロール]オプションボタンを押す.
- 左にあるリストボックスが[残りのロール]となるのでその中から
RESOURCEを選択し,[付与]ボタンを押す.
3.2.2 SQL*Plusを使用してロールを作成
- 新規ロール
"testrole"を作成する.
create role testrole |
- 新規作成したロール
"testrole"に"resource"ロールを付与する.
grant resource to testrole |
4.ユーザの作成
ここでは,ユーザtestuserを作成し,先に作成したロール"testrole"を付与する.
ロール作成時と同じように,Security Managerを使った方法とSQL文での作成方法を記述する.
4.1 Security Managerを使用してのユーザの作成
- [Security Manager]を起動する.
- [データベースのログオン]画面で管理者権限のある[ユーザ](internal,system),[パスワード],および[データベース名](Net Eazy Configurationで作成した別名でも可能)を入力し,[OK]ボタンを押す.
- [ユーザ]タブを選択する.
- [新規ユーザ]ボタンを押す.
- [新規ユーザ名]に
"testuser"を入力し,,このユーザにに対する[パスワード],[パスワード確認]をそれぞれ入力する. ロールの時と違い,パスワードの入力は必須である. - [ロールと権限を今割り当てるには「はい」を押してください]とダイアログで表示されるので,[はい]ボタンを押す.
- [ユーザ変更]画面が表示される.
- [権限とロール]画面タブ内の[表示]フレームにある[ロール]オプションボタンを押す.
- 左にあるリストボックスが[残りのロール]となるのでその中から
testroleを選択し,[付与]ボタンを押す.
4.2 SQL*Plusを使用してユーザを作成
- 新規ユーザ「
"testuser"」をパスワード「"userpasswd"」として作成する.
|
- 新規作成したユーザ
"testuser"に"testrole"ロールを付与する.
|
5.その他のオプション
ここでは,ユーザアカウント作成時に設定できるその他のオプションについて説明する.
5.1.デフォルトのテーブルスペースの指定
上記のようにユーザを作成すると,testuserユーザが作成する表やインデックス等は,Oracleが利用するSYSTEMデータベースに作成されるようになる.
このままでは不具合があるので,ユーザを作成する際にデフォルトのテーブルスペースを設定する.
create user testuser identified by userpasswd default tablespace tablespace_name; |
5.2.テンポラリテーブルスペースの指定
作成するユーザがワークエリアとして利用するテーブルスペースについて指定することができる.
create user testuser identified by userpasswd default tablespace tablespace_name temporary table space temporary_tablespace_name; |

