포스트그레스큐엘 PostgreSQL 계정 삭제 방법 완전정리 PostgreSQL user 제거 DROP ROLE DROP USER DROP OWNED

PostgreSQL 데이터베이스에서 더 이상 필요하지 않은 계정을 안전하게 제거하는 방법을 알아봅니다. 이 글에서는 **PostgreSQL 계정 삭제** 기본 명령어와 객체 의존성 문제 해결, DROP ROLE과 DROP USER의 차이, 유틸리티 dropuser 활용법까지 단계별로 설명합니다.

PostgreSQL 계정 삭제 방법 확인하기

PostgreSQL에서 계정을 삭제할 때는 DROP ROLE 또는 DROP USER 명령을 사용합니다. PostgreSQL 공식 문서에 따르면 DROP ROLE은 주어진 롤(role)을 제거하는 명령입니다. 이 롤이 슈퍼유저 역할이라면 슈퍼유저 권한이 필요합니다.

기본적으로 PostgreSQL에서는 DROP USER도 DROP ROLE과 동일하게 작동하며, DROP USER가 내부적으로 DROP ROLE을 호출합니다.

PostgreSQL DROP USER SQL 명령 상세 더보기

가장 간단한 PostgreSQL 계정 삭제 명령은 DROP USER입니다. SQL 셸(psql)에 접속하고 아래와 같이 입력하면 됩니다.

DROP USER 사용자이름; DROP USER IF EXISTS 사용자이름; 

이 명령은 해당 계정이 존재할 때만 삭제하며 IF EXISTS를 사용하면 존재하지 않을 경우 에러 대신 Notice로 처리합니다.

삭제되지 않는 계정 문제 해결 방법 더보기

삭제 명령을 실행했는데 “role cannot be dropped because some objects depend on it” 같은 오류가 발생한다면 해당 계정이 소유한 객체가 존재하거나 권한이 남아 있기 때문입니다. 이런 경우에는 먼저 객체 소유권을 다른 롤로 이전하거나 권한을 제거해야 합니다.

  • REASSIGN OWNED BY old_user TO new_user; — 객체 소유권을 다른 계정으로 이전
  • DROP OWNED BY old_user; — 해당 계정이 소유한 권한과 객체를 제거

dropuser 유틸리티를 활용한 계정 삭제 보기

PostgreSQL은 dropuser라는 커맨드라인 유틸리티를 제공합니다. 이 도구는 psql에 접속하지 않고도 PostgreSQL 계정을 삭제할 수 있는 래퍼(wrapper)입니다.

sudo -u postgres dropuser 사용자이름 sudo -u postgres dropuser 사용자이름 -e 

-e 옵션은 명령 실행 결과를 에코(echo)로 보여주므로 어떤 작업이 수행되었는지 확인할 수 있습니다.

PostgreSQL 계정 삭제 시 권한 및 객체 확인하기

계정을 삭제하기 전에 해당 계정이 소유하고 있는 데이터베이스, 테이블, 스키마, 시퀀스 등을 확인하는 것이 안전합니다. 아래와 같이 psql에서 간단히 조회할 수 있습니다.

\du SELECT datname FROM pg_database WHERE datdba = (SELECT oid FROM pg_roles WHERE rolname = '사용자이름'); 

\du 명령은 현재 PostgreSQL 서버에 존재하는 모든 롤(role) 목록을 보여줍니다. 삭제 대상 계정이 객체를 소유하고 있다면 먼저 소유권을 이전하거나 제거해야 합니다.

PostgreSQL 계정 삭제와 보안 권장 사항 신청하기

계정 삭제는 단순한 작업 같아도 시스템 보안에 영향을 줄 수 있습니다. **백업을 반드시 수행하고, 객체 소유권 이전 및 권한 제거 절차를 확인 후 삭제하세요.** 또한 운영 환경에서는 계정 삭제 전에 테스트 환경에서 동일 절차를 먼저 검증하는 것이 좋습니다.

자주 묻는 질문 FAQ 보기

PostgreSQL에서 DROP USER와 DROP ROLE은 동일한가요
네, PostgreSQL에서는 DROP USER가 DROP ROLE의 동의어입니다. DROP USER는 DROP ROLE을 호출합니다.
삭제할 계정이 소유한 데이터베이스가 있다면 어떻게 하나요
소유하고 있는 데이터베이스를 먼저 다른 계정으로 이전하거나 삭제하고, 그 후 DROP USER 또는 DROP ROLE을 실행해야 합니다.
CLI 도구 dropuser를 사용하는 것이 안전한가요
네, dropuser는 DROP ROLE 명령을 래핑한 유틸리티로 안전하게 계정을 삭제할 수 있도록 도와줍니다. 다만 슈퍼유저 권한이 필요합니다.

이 글을 통해 PostgreSQL 계정 삭제의 다양한 방법과 실제 환경에서 발생할 수 있는 문제 해결 방법을 이해하고 적용할 수 있습니다.

: