을 사용하고 난 당신이 달성하기 위해 노력하고 정확하게 이해하는 것이 매우 확실하지 않다.
사용자 (또는 역할)에게 CREATE TABLE
권한을 부여 할 수 있습니다. 이를 통해 개발자는 자신의 스키마에서 원하는 모든 테이블을 만들 수 있습니다. 사용자가 테이블을 작성할 수는 있지만 작성할 수있는 테이블의 이름은 제한 할 수 없습니다. 정말 까다로워 지길 원한다면 CREATE TABLE
권한을 부여 할 수 있지만 DDL 트리거를 만들어서 EMP
이 아닌 테이블을 만들지 못하게하십시오. 가능한 일이지만 가난한 아키텍처입니다. 한 손으로 권한을 부여하고 다른 손으로 권한을 부분적으로 제한하면 사용자가 실제로 어떤 권한을 갖고 있는지 이해하기가 매우 어렵습니다.
사용자가 테이블을 소유하고있는 경우, 해당 사용자는 항상 테이블의 허락을 INSERT
, UPDATE
및 DELETE
데이터가뿐만 아니라 TRUNCATE
또는 DROP
같은 DDL을 실행하는 것입니다. 사용자가 EMP
이라는 테이블 만 만들 수 있도록 제한하더라도 해당 사용자는 테이블을 완벽하게 제어 할 수 있습니다.
이제는 권한이있는 사용자 (예 : DBA)가 소유 한 저장 프로 시저에서 원하는 모든 것을 래핑하고 해당 저장 프로 시저를 실행할 수있는 권한을 사용자 (또는 역할)에게 부여 할 수 있습니다 . 예를 들어, DBA 사용자는 CREATE TABLE
문을 수락하고 호출자가 소유 한 스키마가 아닌 스키마에 테이블을 만든 다음이 테이블에 대해 사용자에게 UPDATE
권한을 부여하는 프로 시저를 만들 수 있습니다. 그런 다음 사용자 (또는 역할)에게이 절차에 대한 EXECUTE
권한을 부여 할 수 있습니다. 물론, 왜 그런 일을하고 싶은지 이해하기 힘듭니다. 그러나 당신은 할 수 있었다.