by 디리린 [DB 기타] psql postgre postgresql [2022.12.26 17:38:00]
안녕하세요. DB를 처음 공부하고 실습하고있는 디린이입니다. "sqladmin" 이라는 DB계정을 DDL 문으로 생성했습니다. (CREATE USER) 생성했습니다
그런데 이 계정이 DB에 대한 위험명령어 (DROP TABLE, DROP DB) 을 실행못하게 이러한 DDL 명령 권한을 제거하고싶은데요.
구글링해보면 REVOKE 명령어가 이러한 권한을 제어한다고하는데, 이는 DML (Delete, Insert, Select 등) 에 대한 권한만 제어하는 것 같습니다. 저는 한단계 위인 DROP 단계의 권한을 제거하고싶습니다.
\du 으로 계정 권한속성 확인해보면 "sqladmin" 계정에 대해 superuser, createrole, createdb 권한은 삭제해놓은 상태인데도,
DROP TABLE이 수행가능하여 어떻게 권한을 제거해야할지 모르겠습니다. 아시는분계시면 디린이를 도와주시면 감사드리겠습니다..
Postgresql 에서도 REVOKE 로 Delete, Insert, Select 외 다양한 권한들을 회수 할 수 있습니다.
- https://www.postgresql.org/docs/current/sql-revoke.html
- REVOKE CREATE ON TABLESPACE tablespace_name ~~~ , REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM user_name ; 등 ....
Drop 은 Postgresql 메카니즘에서 자신의 Object 에서는 자동 할당되고 회수할 수 없는 권한으로 보이네요
- https://www.postgresql.org/docs/current/sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS
> There is no need to grant privileges to the owner of an object ~~~~~
> The right to drop an object, or to alter its definition in any way, is not treated as a grantable privilege ~~~~~