728x90
개요
현재 진행 중인 프로젝트에서 하나의 Docker 컨테이너로 PostgreSQL을 실행하고 있으며, 물리적 데이터베이스를 사용자에 맞게 설정하였습니다.
그런데 [42501] ERROR: permission denied for table "테이블"이라는 에러가 발생했습니다.
이 에러를 조사한 결과, 사용자는 CONNECT 권한은 가지고 있었지만, SELECT 권한이 부족하여 권한 오류가 발생한 것이었습니다.
문제 해결 방법
문제 해결방법은 다음과 같습니다.
부족한 권한을 root계정으로 접속하여 각 테이블에 맞게 권한을 부여했습니다.
-- 'hub_service' 사용자에게 'p_hubs' 테이블에 대해 데이터 조회, 삽입, 삭제 및 수정 권한 부여
GRANT SELECT, INSERT, DELETE, UPDATE ON p_hubs TO hub_service;
-- 'hub_service' 사용자에게 'p_hubs' 테이블에 대해 모든 권한 부여
GRANT ALL PRIVILEGES ON p_hubs TO hub_service;
-- 새로 생성되는 테이블에 대해 'hub_service' 사용자에게 기본적으로 데이터 조회, 삽입, 삭제 및 수정 권한 부여
ALTER DEFAULT PRIVILEGES
GRANT SELECT, INSERT, DELETE, UPDATE ON TABLES TO hub_service;
사용자에게 테이블에 대해 데이터를 조회, 삽입, 삭제 및 수정할 수 있는 권한을 부여합니다. 그리고 사용자가 데이터에 대한 모든 작업을 수행할 수 있도록 권한을 부여해줍니다.
그리고 새로 생성되는 이 쿼리들은 사용자가 p_hubs 테이블에 대해 데이터 조회, 삽입, 삭제 및 수정할 수 있는 권한을 부여하며, 해당 사용자가 데이터에 대해 모든 작업을 수행할 수 있도록 권한을 설정합니다.
또한, 새로 생성되는 테이블에 대해서도 기본적으로 같은 권한을 부여하도록 설정합니다.
그러면 위와 같이 각 사용자는 테이블에 권한이 부여되게 됩니다.
따라서 원래의 문제였던 SELECT 역시 위와 같이 정상적으로 SELECT한 것을 확인할 수 있습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.12 - 멀티 모듈 환경에서의 Q클래스 생성오류 해결 (0) | 2024.09.12 |
---|---|
[TIL, 일일 회고] 2024.09.11 - Hibernate @SQLRestriction 어노테이션: 사용법과 장단점 분석 (1) | 2024.09.11 |
[TIL, 일일 회고] 2024.09.09 - IntelliJ에서 파일 탭이 빨간색으로 표시되는 이유와 해결 방법 (0) | 2024.09.09 |
[TIL, 일일 회고] 2024.09.08 - 인적 오류로 인한 .idea 폴더 커밋 문제 해결: .gitignore 설정의 중요성 (0) | 2024.09.08 |
[TIL, 일일 회고] 2024.09.07 - Spring Cloud Config 구축 테스트 (1) | 2024.09.07 |