--- 아래의 설치 과정은 root 권한으로 진행하였습니다. ---
1. uname -a 또는 uname -m 명령어를 통해 아키텍처를 확인한다.
# uname -m
x86_64
2. yum 의 respository 에 postgresql 을 추가한다.
https://yum.postgresql.org/repopackages/
위의 사이트에서 설치할 환경의 repo rpms 를 확인한다. (x86_64의 경우 CentOS 7 - x86_64 )
rpm 을 download 해서 설치하거나
yum install -y pgdg-redhat-repo-latest.noarch.rpm
URL 을 사용한 설치를 하면 된다. (URL 이 변경될 가능성이 있으니 위의 사이트에서 확인해야한다.)
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
3. yum respository 에 postgresql 이 추가됬는지 확인한다.
yum repolist enabled
만약 아래와 같은 선택지가 나온다면 y 를 눌러서 Import 해준뒤 다시 확인해보면 된다.
pgdg12/7/x86_64/signature | 198 B 00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package : pgdg-redhat-repo-42.0-25.noarch (@/pgdg-redhat-repo-latest.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Is this ok [y/N]: y
아래와 같은 리스트가 나오면 성공이다.
# yum repolist enabled
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
* epel: ftp.riken.jp
* extras: mirror.kakao.com
* updates: mirror.kakao.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,758
extras/7/x86_64 CentOS-7 - Extras 512
pgdg-common/7/x86_64 PostgreSQL common RPMs for RHEL / CentOS 7 - x86_64 378
pgdg10/7/x86_64 PostgreSQL 10 for RHEL / CentOS 7 - x86_64 1,113
pgdg11/7/x86_64 PostgreSQL 11 for RHEL / CentOS 7 - x86_64 1,255
pgdg12/7/x86_64 PostgreSQL 12 for RHEL / CentOS 7 - x86_64 856
pgdg13/7/x86_64 PostgreSQL 13 for RHEL / CentOS 7 - x86_64 608
pgdg14/7/x86_64 PostgreSQL 14 for RHEL / CentOS 7 - x86_64 343
updates/7/x86_64 CentOS-7 - Updates 4,135
repolist: 33,030
4. PostgreSQL12 서버 설치
우선 yum install 가능한 목록에 postgresql12 가 있는지 확인해본다.
# yum list | grep postgresql12
postgresql12.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-contrib.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-devel.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-docs.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-libs.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-llvmjit.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-odbc.x86_64 13.02.0000-1PGDG.rhel7 pgdg12
postgresql12-odbc-debuginfo.x86_64 12.02.0000-1PGDG.rhel7 pgdg-common
postgresql12-plperl.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-plpython.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-plpython3.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-pltcl.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-server.x86_64 12.12-1PGDG.rhel7 pgdg12
postgresql12-tcl.x86_64 3.0.0-1.rhel7 pgdg12
postgresql12-test.x86_64 12.12-1PGDG.rhel7 pgdg12
위의 list 중에서 postgresql12-server 를 설치한다. (yum 이 알아서 의존성 관련 패키지를 찾아서 설치해준다.)
yum install -y postgresql12-server
※ PostgreSQL 서버는 설치시 postgres 계정이 없으면 자동으로 생성한다.
postgresql12-server 설치가 완료됬다면 /usr/pgsql-12 경로에서 확인이 가능하다.
# ls /usr/pgsql-12
bin lib share
5. PostgreSQL12 Database setup
/usr/pgsql-12/bin 경로에서 postgresql-12-setup 을 통해 Database setup 을 진행한다.
# cd /usr/pgsql-12/bin
# ls
clusterdb dropdb pg_archivecleanup pg_config pg_dump pg_receivewal pg_rewind pg_upgrade postgres postmaster vacuumdb
createdb dropuser pg_basebackup pg_controldata pg_dumpall pg_resetwal pg_test_fsync pg_waldump postgresql-12-check-db-dir psql
createuser initdb pg_checksums pg_ctl pg_isready pg_restore pg_test_timing pgbench postgresql-12-setup reindexdb
# ./postgresql-12-setup initdb
Initializing database ... OK
6. postgresql 서버 설정
※ 여기서부터는 postgres 계정으로 진행
계정 전환 (root -> postgres)
# su - postgres
-bash-4.2$ whoami
postgres
-bash-4.2$ pwd
/var/lib/pgsql
postgresql 원격 접속 설정
/var/lib/pgsql/12/data/pg_hba.conf 파일의 # IPv4 local connections: 부분 설정을 아래와 같이 변경
-bash-4.2$ cd /var/lib/pgsql/12/data
-bash-4.2$ vi pg_hba.conf
< pg_hba.conf >
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 0.0.0.0/0 md5
/var/lib/pgsql/12/data/postgresql.conf 파일의 listen_addresses 설정을 아래와 같이 변경
-bash-4.2$ cd /var/lib/pgsql/12/data
-bash-4.2$ vi postgresql.conf
< postgresql.conf >
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
7. postgresql 서버 기동
PostgreSQL 서비스 등록 (root 권한 필요)
OS가 기동될때 자동으로 postgresql 서버를 기동하도록 한다. (os 재부팅이 잦을때 사용하면 좋음, 필수는 아님)
# systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
PostgreSQL 기동 및 정지
기동 방법에는 root 권한으로 systemctl 을 사용하는 방법과 postgres 계정으로 pg_ctl 을 사용하는 방법이 있다.
둘 중 하나의 방법으로만 사용해야하며, 두개의 방법을 교차해서 사용하면 안된다.
< systemctl 을 사용하여 기동 (root) >
# systemctl start postgresql-12
< systemctl 을 사용하여 정지 (root) >
# systemctl stop postgresql-12
< systemctl 을 사용하여 재기동 (root) >
# systemctl restart postgresql-12
※ postgres 계정으로 사용할 경우 PATH 에 /usr/pgsql-12/bin 를 추가하는것이 편리하다.
( 기본적으로 pg_ctl, psql 같은 util path 가 안잡혀있음 )
< postgres 계정 PATH 등록 >
-bash-4.2$ cd ~
-bash-4.2$ pwd
/var/lib/pgsql
-bash-4.2$ vi .bash_profile
< .bash_profile 마지막에 아래 내용 추가 >
export PATH=$PATH:/usr/pgsql-12/bin
이후 postgres 계정 재접속 또는 source .bash_profile 실행
-bash-4.2$ source .bash_profile
-bash-4.2$ env | grep PATH
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/pgsql-12/bin
< pg_ctl 을 사용하여 기동 (postgres) >
-bash-4.2$ pg_ctl start
서버를 시작하기 위해 기다리는 중....2022-08-18 13:52:02.709 KST [9280] 로그: starting PostgreSQL 12.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2022-08-18 13:52:02.712 KST [9280] 로그: IPv6, 주소: "::1", 포트 5432 번으로 접속을 허용합니다
2022-08-18 13:52:02.712 KST [9280] 로그: IPv4, 주소: "127.0.0.1", 포트 5432 번으로 접속을 허용합니다
2022-08-18 13:52:02.713 KST [9280] 로그: "/var/run/postgresql/.s.PGSQL.5432" 유닉스 도메인 소켓으로 접속을 허용합니다
2022-08-18 13:52:02.715 KST [9280] 로그: "/tmp/.s.PGSQL.5432" 유닉스 도메인 소켓으로 접속을 허용합니다
2022-08-18 13:52:02.744 KST [9280] 로그: 서버 로그를 로그 수집 프로세스로 보냅니다.
2022-08-18 13:52:02.744 KST [9280] 힌트: 이제부터 서버 로그는 "log" 디렉터리에 보관됩니다.
완료
서버 시작됨
< pg_ctl 을 사용하여 정지 (postgres) >
-bash-4.2$ pg_ctl stop
서버를 멈추기 위해 기다리는 중.... 완료
서버 멈추었음
< pg_ctl 을 사용하여 재기동 (postgres) >
-bash-4.2$ pg_ctl restart
서버를 멈추기 위해 기다리는 중.... 완료
서버 멈추었음
서버를 시작하기 위해 기다리는 중....2022-08-18 13:52:28.049 KST [9290] 로그: starting PostgreSQL 12.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2022-08-18 13:52:28.049 KST [9290] 로그: IPv6, 주소: "::1", 포트 5432 번으로 접속을 허용합니다
2022-08-18 13:52:28.049 KST [9290] 로그: IPv4, 주소: "127.0.0.1", 포트 5432 번으로 접속을 허용합니다
2022-08-18 13:52:28.050 KST [9290] 로그: "/var/run/postgresql/.s.PGSQL.5432" 유닉스 도메인 소켓으로 접속을 허용합니다
2022-08-18 13:52:28.051 KST [9290] 로그: "/tmp/.s.PGSQL.5432" 유닉스 도메인 소켓으로 접속을 허용합니다
2022-08-18 13:52:28.085 KST [9290] 로그: 서버 로그를 로그 수집 프로세스로 보냅니다.
2022-08-18 13:52:28.085 KST [9290] 힌트: 이제부터 서버 로그는 "log" 디렉터리에 보관됩니다.
완료
서버 시작됨
Postgresql 서버 접속 확인
※ 당연한 소리지만 postgresql 서버를 기동을 먼저 해야한다.
Local 접속 확인
posgres 계정으로 접속후 psql -d postgres 명령으로 db 접속
# su - postgres
-bash-4.2$ psql -d postgres
psql (12.12)
도움말을 보려면 "help"를 입력하십시오.
postgres=#
< USER 및 ROLE 확인 >
postgres-# \du
롤 목록
롤 이름 | 속성 | 소속 그룹:
----------+------------------------------------------------+------------
postgres | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
원격지 접속 확인
※ 원격 접속을 하려면 새로운 db user 를 생성하거나 postgres (관리자 계정) 의 password 를 설정해야 한다.
< postgres 관리자 계정 password 설정 >
# su - postgres
-bash-4.2$ psql -d postgres
psql (12.12)
도움말을 보려면 "help"를 입력하십시오.
postgres=# alter user postgres with password 'New Password';
ALTER ROLE
이후 db 접속 tool 을 사용하여 접속 확인
'UNIX (AIX, LINUX, HP-UX, SOLARIS, ...) > DB' 카테고리의 다른 글
[ORACLE] ORA-12547: TNS:lost contact (0) | 2023.01.20 |
---|