Anyway

[DB] PostgreSQL Install 및 계정 생성 / 접속(Peer Authentication 에러 해결) 본문

Database

[DB] PostgreSQL Install 및 계정 생성 / 접속(Peer Authentication 에러 해결)

dyana 2025. 1. 9. 11:20

OS : Rhel 8.4

 

OS 파악 필요 시 

cat /etc/os-release

 

 

1. PostgreSQL ver13 Install

 

1-1. PostgreSQL13 Repository 추가

sudo yum install -y https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

1-2. 기본 모듈 비활성화

sudo dnf -qy module disable postgresql

 

1-3. Install

sudo yum install -y postgresql13 postgresql13-server

 

1-4. 초기화

sudo /usr/pgsql-13/bin/postgresql-13-setup initdb

 

1-5. 서비스 시작 및 활성화

sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13

 

1-6. 버전 확인

psql --version

 

 

2. 사용자 계정 생성 및 접속

 

2-1. 기본 계정으로 접속

접속하려면 먼저 postgres 사용자로 전환 후 psql을 실행한다. 

sudo -i -u postgres
psql

 

2-2. 새 사용자 계정 생성

#비밀번호가 없는 계정 생성 시
CREATE USER <계정명>;

 

#비밀번호가 있는 사용자 계정 생성 시
CREATE USER <계정명> WITH PASSWORD '<password>';

 

#superuser권한을 가진 계정 생성 시
CREATE USER <계정명> WITH PASSWORD '<password>' SUPERUSER;

 

2-3. 사용자 확인

\du

 

2-4. 새로 만든 계정으로 접속 

psql -U <계정명>

 

접속 시도 하니 > 🫨⚠️ psql: error: FATAL : database “llmops” does not exist 에러 발생

이 에러는 계정만 만들고 접속 시도를 하려고 하니 데이터베이스가 존재하지 않는다는 에러로 PostgreSQL에 접속할 때 기본적으로 사용자가 자신과 동일한 이름의 데이터베이스에 접속하려고 시도하기 때문이다. 현재 계정명만 만들고 그 안에 db를 만들어 놓지 않아서 발생한 것이다. 

 

2-5. 데이터베이스 생성

#기본 계정으로 재접속
sudo -i -u postgres
psql

 

\l

 

CREATE DATABASE <new db>;

 

2-6. 새로 만든 계정으로 재 접속(시스템 계정 말하는 거 아님)

psql -U llmops -d postgres -W

-d 옵션으로 데이터베이스명 지정

psql에 접속할 때 특정 데이터베이스 이름을 명시하지 않으면 기본적으로 사용자 이름과 같은 이름의 데이터베이스에 접속하려고 시도한다. 이 경우 새로운 계정명의 데이터베이스를 만들어 놓지 않으면 위와 같이 db가 존재하지 않는다는 에러가 뜨면서 접속이 불가할 것이다. 

 

그리고 나서 또 나올 수 있는 에러 

🫨⚠️ Peer authentication failed for user 

PostgreSQL에서 Peer 인증 방식이 사용되고 있음 > 이는 사용자 이름이 시스템 사용자와 일치해야만 접속이 허용되는 방식이기에 위 생성한 계정명과 동일한 시스템 계정으로 접속을 시도해야 한다는 것이다. 

시스템 계정 생성 없이 접속 시도를 가능하게 하려면 config 파일 내용을 변경해줘야 한다. 

sudo vi var/lib/pgsql/13/data/pg_hba.conf

 

peer 인증 방식을 md5로 변경

# 기존 (peer 인증)
local   all             llmops                                  peer

# 수정 후 (md5 비밀번호 인증)
local   all             llmops                                  md5

 

재시작(꼭 해줘야 함. 안 그럼 적용 안 됨)

sudo systemctl restart postgresql-13

 

이렇게 해주면 접속 잘 된다.