Oracle 11gでユーザー/スキーマを作成し、そのユーザーにすべての権限を付与したいと考えています。簡単なスクリプトでこれを行うにはどうすればよいですか。私は次のリンクを見ましたが、どちらを使用するか、またはこれらのステートメントが最善の方法かどうかはわかりません。
http://ss64.com/ora/grant.html
私がこれを最も簡単な方法で安全に行う方法を提案できますか?
新しいユーザーを作成するには、「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;
ユーザーを作成します。
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 ;