Oracle 11g でユーザー/スキーマを作成し、すべての権限をユーザーに付与したいと考えています。簡単なスクリプトでこれを行うにはどうすればよいですか。次のリンクを見ましたが、どれを使用すればよいのか、これらのステートメントが最適な方法なのかわかりません。
http://ss64.com/ora/grant.html
最も簡単で安全な方法でこれを行う方法を提案できますか?
Oracle 11g でユーザー/スキーマを作成し、すべての権限をユーザーに付与したいと考えています。簡単なスクリプトでこれを行うにはどうすればよいですか。次のリンクを見ましたが、どれを使用すればよいのか、これらのステートメントが最適な方法なのかわかりません。
http://ss64.com/ora/grant.html
最も簡単で安全な方法でこれを行う方法を提案できますか?
新しいユーザーを作成するには、「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;
このステートメントは完全ではありません。追加の権利 (たとえば、インデックスのメンテナンス) が必要になる場合がありますが、オンラインのオラクル ドキュメントを参照してください。
その後、新しく作成したユーザーにロールを付与します。
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 ;