Oracle 11gでユーザーを作成し、そのユーザーに1つの特定のストアドプロシージャとそのプロシージャ内のテーブルのみを実行する機能のみを付与する方法について誰かにアドバイスしてもらえますか。
どうすればいいのかよくわかりません!
回答:
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;
プロシージャが使用するテーブル。
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>;
Oracleのドキュメントは包括的で、オンラインで無料です。あなたはそれを使うことを学ぶべきです。CREATE USERの構文はここにあり、GRANTの構文はここにあります。
データベースに接続するには、ユーザーにCREATESESSION特権を付与する必要があります。
ストアドプロシージャで新しいユーザー権限を許可するには、EXECUTE権限を付与する必要があります。付与者は、次のいずれかである必要があります。
通常、ストアドプロシージャを使用するために、ストアドプロシージャで使用されるオブジェクトに権限を付与する必要はないことに注意してください。デフォルトの権限では、プロシージャの所有者と同じ権限でプロシージャを実行し、いわば、プロシージャの実行時に権限を継承します。これはAUTHID句でカバーされています。デフォルトは定義者(つまり、プロシージャの所有者)です。AUTHIDがCURRENT_USER(呼び出し側、つまり新しいユーザー)に設定されている場合にのみ、プロシージャで使用されるオブジェクトに対する権限を付与する必要があります。 詳細をご覧ください。
TESTやPRODなどの重要な環境ではこれらのアプローチを使用しないでください。以下の手順は、ローカル環境向けに提案されています。私のローカルホストの場合、次の手順でユーザーを作成します。
重要な注意: SYSTEMユーザー資格情報を使用してユーザーを作成してください。そうしないと、同じデータベースで複数のアプリケーションを実行するときに問題が発生する可能性があります。
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
編集:オラクルora-28001に関する問題に直面した場合、パスワードの有効期限が切れています。これも実行すると便利です。
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
コメントで何度も言及したように、OracleCONNECT
では、RESOURCE
およびDBA
ロールの使用を推奨していません。
自分のロールとこのロールを与えられたユーザーを作成するには、SYSとして接続する必要があります。必要に応じて、SQLDeveloperまたはSQL * Plusを使用できます。ログオン文字列にSYSDBAの役割を記載することを忘れないでください。connect_identifier
異なる構文を使用しています。
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
「OracleTechnologyNetwork DeveloperDay」でVMとして提供されているような12cR1があるとします。接続文字列は次のようになります(提供されたPDBに接続するため):
sqlplus sys/oracle@127.0.0.1/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で区切られた識別子(引用符で囲まれている)を使用することもできます。クォータはのunlimited
代わりになり20m
ます。
create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;
最終的には、新しいユーザーとして接続します。
デフォルトのプロファイルを変更したり、別のプロファイルを提供して、パスワードの有効期限、許可されたログイン試行の失敗回数など、一部の設定をカスタマイズすることもできます。
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
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#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant -permissions-in-oracle /
ステップ1 。
create user raju identified by deshmukh;
ステップ2。
grant connect , resource to raju;
ステップ3。
grant unlimitted tablespace to raju;
ステップ4。
grant select , update , insert , alter to raju;
CONNECT
ロールには名前が示すよりもはるかに多くの権限があります。CREATE SESSION
代わりに許可したいと思います。