개발환경 linux ubuntu 20.04
문제 상황
postgre 서버를 실행하고, psql로 접속을 시도하자 다음과 같은 에러가 발생했다.
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
그래서 먼저 포트가 열렸는지를 확인했는데, 포트도 열려있지 않았다.
(포트 설정은 /var/lib/postgresql/{version}/main/postgresql.conf 에서 확인가능)
sudo lsof -i :5432
혹시나 해서 Postgre가 꺼져있는지도 확인했으나 정상 작동중이었다.
systemctl status postgresql
systemctl list-unit-files
원인 분석
ostgresql의 로그가 위치하는 파일로 이동해 로그를 확인해봤다.
로그 파일은 var/log/postgresql/postgresql-{버전}-main.log 에 위치해있다.
로그를 보니 이런 에러를 확인할 수 있었다.
data directory "/var/lib/postgresql/12/main" has invalid permissions
DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
해당 경로의 권한을 로그에 나오는 것처럼 변경해주자.
sudo chmod 700 /var/lib/postgresql/12/main
이후 재시작 시, 정상적으로 포트가 열리고 실행됨을 확인할 수 있었다.
주의사항
대신 루트 사용자가 아니면 conf 파일을 확인할 수 없다.
급하게 정 봐야된다면, 다음 명령어로 관리자 모드로 접속해 읽어 주자.
sudo -i
reference