서막

GitHub에 간단한 CRUD 프로젝트를 추가하기 위해서
Spring Boot 세팅을 하는데...
아뿔싸 로컬 PostgreSQL DB 비밀번호를 잊어버렸다.

과정

생각보다 간단하지만 나는 모종의 이유로 시간이 2~3일 걸린 것 같다.

pg_hba.conf 파일 수정하기

pg_hba.conf 파일은 서버에서 클라이어늩 연결을 어떻게 인증할지 설정하는 파일이다. 이 파일은 호스트/사용자/방법 별로 PostgreSQL 서버에 어떤 방식으로 접근할지 미리 세팅해놓는 파일이다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

▲ C:/Program Files/PostgreSQL/16(Version)/data/pg_hba.conf

기존의 pg_hba.conf 파일의 제일 하단을 보면 위와 같이 인증 방식이 정의되어 있다.

여기서 METHOD는 클라이언트 인증 방식을 정의하는 곳인데, 각각 항목은 다음과 같다.

자주 사용하는 인증 방식의 종류

  • trust: 인증을 요구하지 않음.
  • md5, password: 패스워드를 사용한 MD5 또는 평문 인증.
  • scram-sha-256: SCRAM-SHA-256을 사용한 안전한 인증.
  • 기타 인증 방식으로 reject, gss, sspi, ident, peer, pam, ldap, radius, cert가 있음.

인증 방식 변경

비밀번호를 잊어버렸기 때문에 비밀번호 없이 접속이 가능하도록 변경해준다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

▲ C:/Program Files/PostgreSQL/16(Version)/data/pg_hba.conf

인증 방식을 모두 trust로 변경해준다.


그럼 이렇게 뭘로 접속하든 비밀번호 없이 접속할 수 있다.
보안 뚫리기 딱 좋다.

SQL 명령어로 비밀번호 변경

그 다음에

ALTER USER postgres WITH PASSWORD '당신의 비밀번호';

입력하면 ALTER ROLE이라고 뜨면서 비밀번호가 변경되어야 하는데 뭔가 이상하다.

그렇다. 이미 나의 머리는 DB IDE에 절여져서 세미콜론을 입력하지 않았다.
놀랍지만 여기서 이틀을 헤맸다.

나는 다른 방법으로 비밀번호를 바꿨다.

콘솔 명령어로 비밀번호 변경

\password postgres

이 방식으로 비밀번호를 변경해주었다.

SQL 명령어와 콘솔 명령어로 비밀번호를 변경하는 방식은 둘다 변경이 가능하지만 \password로 변경하는 방식이 내부적으로 Salt를 사용하여 좀 더 안전하다고 한다.

인증 방식 재지정

이제 비밀번호를 아는 사람이기 때문에 다시 인증을 통해야만 접속할 수 있도록 초기 상태로 원복해준다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

▲ C:/Program Files/PostgreSQL/16(Version)/data/pg_hba.conf

소감

세미콜론 입력 안 해서 헤맬 때는 '다시는 비밀번호를 잊지 않겠다.'라고 다짐했지만 생각보다 쉬운 과정에 또 잃어버려도 될 것 같다는 생각을 해버렸다.

References

profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2023년 12월 6일

매우매우 감사합니다. 몇시간동안 삽질하고있었는데 덕분에 이틀걸릴거 줄였습니다

답글 달기
comment-user-thumbnail
2024년 4월 30일

정말 감사합니다 비밀번호 설정해 놓고 기억을 못해서 고민하고 있었는데 바로 해결했습니다 ^^

답글 달기