문제 상황
EC2 Ubuntu 18.04에서 PostgreSQL 14를 재시작하려 했으나 서비스가 기동되지 않았다.
systemctl status postgresql@14-main 을 통해 확인한 결과, 다음과 같은 에러 로그가 출력되었다.
FATAL: could not open log file "pg_log/postgresql-YYYY-MM-DD_HHMMSS.log": Permission denied


pg_log 디렉토리에 대한 접근 권한이 없어 PostgreSQL이 로그 파일을 생성하지 못하고 종료되는 상황이었다.
(이전에 DB 백업 작업을 하면서 pg_log 폴더에 대한 권한이나 소유자 설정이 바뀐 듯 했다.)
원인 분석
PostgreSQL은 postgres 사용자로 실행되며, 로그를 기본적으로 pg_log 디렉토리에 생성한다.
이 디렉토리의 소유자나 권한이 변경되었을 경우 로그 파일을 쓸 수 없어 서비스 시작이 실패한다.
해결 방법
권한 문제를 해결하기 위해 다음 두 명령어를 실행했다.
sudo chown -R postgres:postgres /var/lib/postgresql/14/main/pg_log
sudo chmod 700 /var/lib/postgresql/14/main/pg_log
- chown: 디렉토리의 소유자를 postgres 로 변경
- chmod: postgres만 접근 가능하도록 권한 설정
결과
PostgreSQL 서비스를 재시작한 결과, 정상적으로 기동되었다.
sudo systemctl restart postgresql@14-main

참고
- pg_log는 postgresql.conf의 log_directory 설정에 따라 달라질 수 있다.
- pg_lsclusters 명령어로 현재 클러스터 상태를 쉽게 확인할 수 있다.
이와 같은 권한 문제는 디스크 복원, 수동 파일 이동, 백업 복원 등의 과정에서 자주 발생하므로 유사 상황시 위와 같은 방식으로 점검하면 된다.
728x90
반응형
'DataBase > PostgreSQL' 카테고리의 다른 글
| [PostgreSQL] Port 변경 방법 (0) | 2022.06.04 |
|---|---|
| [PostgreSQL] pg_hba.conf / DB의 보안설정의 필요성 (0) | 2022.05.31 |
| 원격 호스트의 Postgresql 접속하기 (1) | 2022.01.23 |
| [PostgreSQL] 시퀀스(Sequence) 사용법 (1) | 2021.12.29 |