web-dev-qa-db-ja.com

Oracle 11gでユーザーを作成して権限を付与する方法

誰かがOracle 11gでユーザーを作成し、そのユーザーに特定のストアドプロシージャとそのプロシージャ内のテーブルのみを実行する権限を付与する方法を教えてもらえますか。

その方法がよくわかりません。

75
Andy5

SYSTEMとして接続してください。

CREATE USER username IDENTIFIED BY apassword;

GRANT CONNECT TO username;

GRANT EXECUTE on schema.procedure TO username;

次のことも必要になる可能性があります。

GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;

プロシージャが使用するテーブル.

84
cagcowboy

Oracleでユーザーを作成するには、以下の手順に従います。
- システムユーザーとして接続

CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;

- ユーザークエリを作成する

CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;

- 役割を提供する

GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;

- 特権を提供する

GRANT CREATE SESSION GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;

- テーブルへのアクセスを提供します。

GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
25
Sanoop

オラクル社のドキュメントは、包括的でオンラインで無料です。あなたはそれを使うことを学ぶべきです。 CREATE USERはこちら および GRANTはこちら の構文は、次のとおりです。

データベースに接続するには、ユーザーに CREATE SESSION権限 を付与する必要があります。

ストアドプロシージャに対する新しいユーザー権限を許可するには、EXECUTE権限を付与する必要があります。付与者は、次のいずれかでなければなりません。

  • プロシージャの所有者
  • wITH ADMINオプションを使用してそのプロシージャの実行を許可されたユーザー
  • gRANT ANY OBJECT権限を持つユーザー
  • dBAまたは他のスーパーユーザーアカウント.

通常、プロシージャを使用するためにストアドプロシージャで使用されるオブジェクトに対する権限を付与する必要はありません。デフォルトの権限は、プロシージャの所有者と同じ権限でプロシージャを実行し、プロシージャを実行するときにその権限を継承することです。これはAUTHID句でカバーされています。デフォルトは定義者(つまりプロシージャの所有者)です。 AUTHIDがCURRENT_USER(呼び出し側、つまり新しいユーザー)に設定されている場合に限り、プロシージャで使用されるオブジェクトに対する権限を付与する必要があります。 詳細はこちら

21
APC

TESTやPRODのような重要な環境でこれらのアプローチを使わないでください。以下の手順は、地域の環境に適したものです。私のlocalhostのために私はこれらのステップによってユーザーを作成します。

重要なメモ:システムのユーザー認証情報を使ってユーザーを作成してください。同じデータベースで複数のアプリケーションを実行すると、問題が発生する可能性があります。

 CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.

次にスクリプトの下で実行します

CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant

EDIT: Oracle ora-28001について問題が発生した場合、パスワードの有効期限が切れている場合も便利です

select * from dba_profiles;-- check PASSWORD_LIFE_TIME 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
10
erhun

コメントで前述したように、CONNECTRESOURCEおよびDBAロールの使用は、Oracleによって推奨されていません。

自分の役割とこの役割を与えられているユーザーを作成するには、SYSとして接続する必要があります。 SQL DeveloperまたはSQL * Plusを自由に使用できます。ログオン文字列にSYSDBAロールを記載することを忘れないでください。 connect_identifierは異なる構文を使用します。

sqlplus sys/<<password>>@<<connect_identifier>> as sysdba

" Oracle Technology Network開発者デー "の付いたVMとして提供されるものと同じ12cR1があるとしましょう。接続文字列は次のようになります(提供されたPDBに接続するため)。

sqlplus sys/[email protected]/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear

Unixでは、引用符はエスケープする必要があります。そうしないと、シェルによって消費されます。したがって、"\"になります。

次に、ロールMYROLEを作成し、それに他のロールまたは特権を付与します。おもしろいことをするために、最低限必要なものをほとんど追加しました。

create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;

次に、ユーザーMYUSERを作成します。パスワードであるidentified byに続く文字列は大文字と小文字を区別します。残りはそうではありません。大文字に変換され、いくつかの制限がある通常の識別子の代わりに、SQL区切りの識別子(引用符"で囲まれた識別子)を使用することもできます。クォータは20mではなくunlimitedにすることができます。

create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;

やがて、あなたはあなたの新しいユーザーとして接続します。

デフォルトのプロファイルを変更したり、パスワードの有効期限、許可されたログイン試行の失敗回数などの設定をカスタマイズするために別のプロファイルを提供することもできます。

4
Ludovic Kuty
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
2
SREE
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;

https://docs.Oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107https://chartio.com/resources/tutorials/how- Oracleでユーザーを作成して権限を付与する(/

0
N Islam

最初の一歩:

Connect to a database using System/Password;

第二段階:

パスワードで識別されるユーザー名を作成します。 (構文)

Ex: create user manidb idntified by mypass;

第3ステップ:

ユーザー名にconnect、resourceを付与します。 (構文)

Ex: grant connect,resource to manidb;

0
Manideep