>>김규태 님께서 쓰시길<<
:: :: 테이블등을 만드는 유저와 데이타를 조작하는 유저를 분리하면 어떻게 데이타를
:: :: 조작하는 유저에게 권한을 주죠??(제가 초보라서...) role을 쓴다던가 또는
:: :: 꽤 많은 양의 table을 일일이 조작하는 유저에게 권한을 부여하여 줘야 된다는
:: :: 말씀이십니까... 혹시 다른 방법은없나요..........^_^
::
:: 다른 방법은 없습니다.
:: 보통 한 응용프로그램에는 보통 하나의 유저만 사용하는 경향이 있더군요.
:: 특히 connection pool 개념을 사용하는 미들웨어를 사용할 경우는
:: 더욱 그러하구요.
::
:: 이럴 경우 롤을 사용하면 매우 쉽습니다.
:: ( 유저가 많다고 하더라도 . 물론 관리하기는 조금 불편하겠지요.)
:: sqlplus 의 spool 기능을 사용하면 1000개의 테이블이라고 하더라도
:: 권한을 주기가 매우 쉽지요.
:: 물론 사전에 어떻게 권한을 나누어 줄지에 대한 계획이 있어야 합니다.
::
:: 가령 예를 들면 scott 유저에 있는 모든 테이블을 app_user 라는
:: 롤에게 권한을 주고 싶다고 하면 scott 로 접속하여서
:: SQL> set line 300 pagesize 0 echo off feedback off verify off trimspool on
:: SQL> spool grant_app_user.sql
:: SQL> prompt spool grant_app_user.lst
:: SQL> select 'grant select,update,insert,delete on ' || object_name ||
:: SQL> ' to app_user ; '
:: SQL> from user_objects
:: SQL> where object_type = 'TABLE'
:: SQL> /
:: SQL> prompt spool off
:: SQL> spool off
:: SQL> set line 80 pagesize 14 echo on feedback on
::
:: 이렇게 하면 현재 디렉토리에 grant_app_user.sql 파일이 생성되어
:: 있고 이 파일을 실행시키면 되지요.
:: (사실 저는 보통 위의 명령들을 하나의 파일로 만들어 두고 합니다.
:: 보통 sql 문을 만들므로 gen_grant_app_user.sql 로 명명하지요. )
:: SQL> @grant_app_user.sql
::
:: 그럼 이만.
::
그것보단 어짜피 모든 테이블에 대한 권한을 줄꺼라면...
grant select any table to <userID>;
이런식이 훨씬 깔끔하고 낳을겁니다.
물론, select외에도 insert,update,delect도 다 먹습니다.
|