web-dev-qa-db-ja.com

新しいユーザーを作成して特権を付与するOracle 11gステートメント?

Oracle 11gでユーザー/スキーマを作成し、そのユーザーにすべての権限を付与したいと考えています。簡単なスクリプトでこれを行うにはどうすればよいですか。私は次のリンクを見ましたが、どちらを使用するか、またはこれらのステートメントが最善の方法かどうかはわかりません。

http://ss64.com/ora/grant.html

私がこれを最も簡単な方法で安全に行う方法を提案できますか?

9
sweet dreams

新しいユーザーを作成するには、「create user」コマンドを使用します。したがって、一般的なcreate userコマンドは次のようになります。

create user test identified by test default tablespace mytbsp.

もちろん、ユーザー、パスワード、テーブルスペースの値を別の値に置き換える必要があります。ただし、Oracleのドキュメント http://docs.Oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm をご覧になることをお勧めします。

次のステップは、ユーザーに対応する権限を付与することです。ユーザーにすべての権限を与えることは、dba権限も与えるため、非常に悪いアプローチです。代わりに、彼に接続特権と彼のデフォルトのテーブルスペースへの許可を与えることです。また、権限を直接付与するのではなく、ロールを使用することをお勧めします。したがって、再度権限を付与する必要がある場合は、役割を付与するだけで済みます。最初のステップはロールを作成することです:

GRANT CREATE session, CREATE table, CREATE view, 
      CREATE procedure,CREATE synonym,
      ALTER table, ALTER view, ALTER procedure,ALTER synonym,
      DROP table, DROP view, DROP procedure,DROP synonym
      TO MyRole;

このステートメントは完全ではなく、追加の権限(たとえば、インデックスのメンテナンス)が必要になる可能性がありますが、オンラインのOracleドキュメントを参照してください。

その後、新しく作成したユーザーに役割を付与します。

GRANT myrole to test;
9
steve

ユーザーを作成します。

create user user_name identified by password ;

権限を付与します。

grant all privilege to user_name;

特権の数を表示する場合:

select * from system_privilege_map where neme like '%PRIV%';

ユーザーに割り当てられた権限を表示する場合:

select count (*) , grantee
from dba_sys_privs 
where grantee in ('user1','user2')
group by grantee ;
4
Jim Macaulay