Postgres 9.2 설치하기
Oracle Linux 8 환경에 PostgreSQL 9.2.24 버전을 설치하는 것은 매우 까다롭습니다.
PostgreSQL 9.2는 매우 오래된 버전으로, Oracle Linux 8의 기본 저장소는 물론, PostgreSQL 공식 yum 저장소에도 포함되어 있지 않습니다. 이 버전은 보안 업데이트가 중단되어 다수의 취약점이 존재하므로, 운영 환경에서는 절대 사용하지 않는 것을 강력히 권장합니다.
만약 반드시 이 버전을 사용해야 한다면, 소스 코드를 직접 컴파일하여 설치해야 합니다.
PostgreSQL 9.2.24 소스 컴파일 설치 방법
아래 과정은 의존성 충돌 및 기타 문제가 발생할 수 있으므로 주의해서 진행해야 합니다.
필요한 빌드 도구 및 라이브러리 설치:
sudo dnf groupinstall "Development Tools" sudo dnf install readline-devel zlib-devel openssl-devel
PostgreSQL 9.2.24 소스 코드 다운로드:
wget https://ftp.postgresql.org/pub/source/v9.2.24/postgresql-9.2.24.tar.gz
소스 압축 해제:
tar -xzf postgresql-9.2.24.tar.gz cd postgresql-9.2.24
소스 컴파일 및 설치:
설치 경로는
/usr/local/pgsql
로 설정합니다.
<!-- end list -->./configure --prefix=/usr/local/pgsql make sudo make install
**
postgres
사용자 및 데이터 디렉터리 설정:PostgreSQL 서비스 전용 사용자를 생성합니다.
<!-- end list -->sudo useradd postgres sudo mkdir -p /usr/local/pgsql/data sudo chown postgres:postgres /usr/local/pgsql/data
데이터베이스 초기화 및 시작:
postgres
사용자로 전환하여 데이터베이스를 초기화합니다.
<!-- end list -->sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
환경 변수 설정:
psql
과 같은 명령어를 쉽게 실행할 수 있도록PATH
에 설치 경로를 추가합니다.~/.bash_profile
파일을 수정합니다.
<!-- end list -->echo 'export PATH=/usr/local/pgsql/bin:$PATH' >> ~/.bash_profile echo 'export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile source ~/.bash_profile
이 과정을 통해 PostgreSQL 9.2.24를 설치할 수 있지만, 다시 한번 말씀드리지만 보안상의 이유로 새로운 프로젝트에서는 권장되지 않습니다. 만약 가능하다면, Oracle Linux 8에서 기본 지원하는 PostgreSQL 12 이상 버전을 사용하는 것을 강력히 추천합니다.
PostgreSQL 9.2.24 버전을 소스 코드로 설치하셨군요. 이 경우 systemctl
서비스 파일이 자동으로 생성되지 않습니다.
따라서 PostgreSQL 9.2 서비스를 systemctl
로 관리하려면, 직접 서비스 파일을 생성해야 합니다.
1. PostgreSQL 9.2 서비스 파일 생성
root
권한으로 postgresql-9.2.service
파일을 /etc/systemd/system/
디렉터리에 생성합니다.
sudo nano /etc/systemd/system/postgresql-9.2.service
파일에 다음 내용을 복사하여 붙여넣습니다. ExecStart
및 ExecReload
경로를 설치 경로에 맞게 수정해야 합니다. (이전에 /usr/local/pgsql
로 설치했다고 가정)
[Unit]
Description=PostgreSQL 9.2 database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/usr/local/pgsql/data
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /usr/local/pgsql/data
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data
[Install]
WantedBy=multi-user.target
2. systemctl
서비스 등록 및 활성화
파일을 저장하고 종료한 후, systemctl
에 방금 생성한 서비스를 등록하고 활성화합니다.
# systemctl 데몬 새로고침
sudo systemctl daemon-reload
# PostgreSQL 9.2 서비스 시작
sudo systemctl start postgresql
PostgreSQL 9.2 서비스가 정상적으로 실행 중이므로, 이제 Windows의 DBeaver에서 접속할 수 있도록 설정을 진행해야 합니다.
1. WSL IP 주소 확인
Windows DBeaver가 접속할 WSL의 IP 주소를 확인해야 합니다. 이 IP 주소는 WSL 재시작 시 변경될 수 있습니다.
WSL 터미널에서 실행:
ip addr show eth0 | grep inet
출력된 결과 중
inet
뒤에 있는 IP 주소(예:172.19.16.14
)를 메모해 두세요.
2. PostgreSQL 외부 접속 설정
PostgreSQL 서버가 외부 접속을 허용하도록 설정 파일을 수정해야 합니다.
**
postgresql.conf
파일 수정:다음 명령어로 파일을 엽니다. (설치 경로가
/usr/local/pgsql
라고 가정)
<!-- end list -->sudo nano /usr/local/pgsql/data/postgresql.conf
listen_addresses
라인을 찾아#
을 제거하고*
로 변경합니다.
<!-- end list -->listen_addresses = '*'
**
pg_hba.conf
파일 수정:다음 명령어로 파일을 엽니다.
<!-- end list -->sudo nano /usr/local/pgsql/data/pg_hba.conf
파일의 맨 아래에 다음 라인을 추가하여 외부 접속을 허용합니다.
<!-- end list -->host all all 0.0.0.0/0 md5
3. PostgreSQL 서비스 재시작
설정 파일 변경 내용을 적용하려면 서비스를 재시작해야 합니다.
sudo systemctl restart postgresql-9.2
4. DBeaver 연결 설정
DBeaver를 열고 새로운 PostgreSQL 연결을 생성합니다.
Host: 위에서 확인한 WSL의 IP 주소
Port:
5432
(기본값)Database: 접속할 데이터베이스 이름 (예:
spc_wsl
)Username:
postgres
Password:
postgres
(이전에 설정한 비밀번호)
설정을 저장하고 연결을 테스트하면 DBeaver에서 PostgreSQL 9.2 데이터베이스에 성공적으로 접속할 수 있습니다.
PostgreSQL 9.2 서비스가 성공적으로 재시작되었고, active (running)
상태로 정상 작동하고 있습니다.
하지만 psql -V
명령어를 실행했을 때 여전히 PostgreSQL 13.21이 출력되는 것은 심각한 문제입니다. 이는 9.2 서버는 실행 중인데, 13 클라이언트로 접속을 시도하게 되어 호환성 문제를 일으킬 수 있습니다.
해결 방법: psql
클라이언트 버전 일치
psql
명령어가 PostgreSQL 9.2 버전을 가리키도록 PATH
환경 변수를 다시 설정해야 합니다.
환경 변수 파일 확인:
이전에
/etc/profile.d/psql.sh
파일을 생성했습니다. 이 파일을 열어 경로가 올바르게 설정되었는지 확인합니다.
<!-- end list -->sudo nano /etc/profile.d/psql.sh
파일 내용이 아래와 같은지 확인하고,
/usr/local/pgsql/bin
경로가PATH
의 가장 앞에 오도록 합니다.
<!-- end list -->export PATH=/usr/local/pgsql/bin:$PATH export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
환경 변수 적용:
파일을 수정한 후, 다음 명령어를 실행하여 변경 사항을 즉시 적용합니다.
<!-- end list -->source /etc/profile.d/psql.sh
재확인:
새로운 터미널 세션을 열거나
source
명령을 실행한 후, 다시psql -V
를 실행하여 버전이 9.2.24로 출력되는지 확인합니다.
<!-- end list -->psql -V
이제 psql
클라이언트와 서버 버전이 일치되어 DBeaver 접속 문제 없이 작업을 진행할 수 있을 것입니다.
PostgreSQL 데이터베이스의 postgres
사용자 비밀번호를 postgres
로 설정하고, 새로운 데이터베이스를 생성하는 방법입니다.
단계별 설정 방법
**
postgres
사용자로psql
에 접속:root
권한에서sudo -u postgres
명령어를 사용하여postgres
시스템 사용자로 전환하고psql
에 접속합니다.
<!-- end list -->sudo -u postgres psql
비밀번호 설정 및 데이터베이스 생성:
psql
프롬프트(postgres=#
)가 나타나면 다음 SQL 명령어를 실행합니다.
<!-- end list -->-- 'postgres' 사용자의 비밀번호를 'postgres'로 설정합니다. ALTER USER postgres WITH PASSWORD 'postgres'; -- spc_wsl 데이터베이스가 없다면 생성합니다. CREATE DATABASE spc_wsl;
**
psql
종료:설정이 완료되면
\q
명령어를 입력하여psql
을 종료합니다.
<!-- end list -->\q
이제 postgres
사용자의 비밀번호가 postgres
로 설정되었고, DBeaver에서 이 정보로 데이터베이스에 접속할 수 있습니다.
제공해주신 오류 메시지는 PostgreSQL 서버가 실행 중이 아니거나, psql
클라이언트가 서버에 연결하기 위해 필요한 소켓 파일을 찾지 못해서 발생하는 문제입니다.
systemctl status
에서는 서비스가 실행 중이라고 나왔지만, psql
클라이언트가 "/run/postgresql/.s.PGSQL.5432"
경로에서 서버 소켓 파일을 찾지 못해 연결에 실패한 것입니다. 이는 서버가 다른 경로에 소켓 파일을 생성했거나, 소켓을 사용하지 않도록 설정되었기 때문입니다.
해결 방법: TCP/IP를 사용하여 접속
가장 빠르고 확실한 해결책은 소켓 연결 대신 TCP/IP를 사용하여 접속하는 것입니다. 이렇게 하면 서버가 정상적으로 실행 중인지 확인할 수 있습니다.
**
psql
명령어로 접속:다음 명령어를 실행하여 로컬호스트(localhost)에 TCP/IP로 접속을 시도합니다.
<!-- end list -->psql -h localhost -U postgres
-h localhost
: TCP/IP 연결을 시도-U postgres
:postgres
사용자로 접속
비밀번호 입력:
postgres
사용자의 비밀번호를 입력하라는 메시지가 나오면 이전에 설정했던 비밀번호를 입력합니다.
이 방법으로 접속이 성공하면 PostgreSQL 서버는 정상적으로 실행 중이며, 소켓 경로 설정에 문제가 있었다는 뜻입니다. 접속에 성공한 후에는 이전에 안내해 드린 ALTER USER
및 CREATE DATABASE
명령어를 실행하시면 됩니다.
2 Comments
Jordan Singer
2d2 replies
Santiago Roberts
4d