리눅스에서 postgres를 처음 쓰면 왜 데이터베이스와 관계 없이 postgres라는 리눅스 사용자가 생성되는지도 모르겠고 사용자 생성했는데 또 뭔 접속할 때 데이터베이스명까지 정해줘야 되고 아주 짜증이 난다.
이건 글 내용과 상관 없는 내용이긴 했는데 아무튼 정신 없이 짜증을 내다보면 사용자 계정 비밀번호도 잊어버릴 수 있다. 틀린 비밀번호를 입력하면 접속이 안 된다.
[root@localhost data]# psql -U postgres
Password for user postgres:
psql: error: FATAL: password authentication failed for user "postgres"
이럴 땐 걱정하지 말고 pg_hba.conf 파일 수정 후 서버만 재기동하면 바로 해결할 수 있다.
PostgreSQL 비밀번호 없이 계정 접속 방법
pg_hba.conf 파일을 수정한다. pg_hba.conf 파일 경로는 설치 환경에 따라 다를 수는 있지만 대부분 /var/lib/psql/{버전}/data/pg_hba.conf 다.
[root@localhost data]# vim /var/lib/pgsql/12/data/pg_hba.conf
아래 이미지와 같은 부분을 확인하 METHOD를 trust로 변경하고 저장한다.
postgresql 서비스를 재기동한다.
[root@localhost data]# systemctl restart postgresql-12.service
이제 비밀번호 없이 아무 계정이나 접속할 수 있다. 슈퍼 계정인 postgres로 접속해보자.
[root@localhost data]# psql -U postgres
psql (12.5)
Type "help" for help.
postgres=#
무사히 접속되면 다시 계정 비밀번호를 바꿔준다. 계속 비밀번호 없이 사용하는 건 테스트 서버에야 문제 없지만 운영 환경에선 그러면 안 된다.
postgres=# ALTER USER postgres PASSWORD 'postgres';
ALTER ROLE
비밀번호를 변경했으면 다시 pg_hba.conf 파일에서 trust로 수정한 걸 md5로 바꾸고 postgres 서버를 재시작 하고 사용한다.
md5로 바꿔주면 다시 접속할 때 비밀번호를 묻는다.