cent os 7.6 に postgreSQL 9.2 をインストールする

postgreSQLの新規インストールからpgAdminでの接続までの記録になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/13a2128e-aff4-d283-ae55-95f5307333ea.png)
**DBサーバ**
CentOS 7.6
postgreSQL 9.2
※selinux,firewalldは停止

**管理サーバ**
Windows Server 2019
pgAdmin 4 v5.2

#1.postgreSQLのインストール
centOS7のデフォルトパッケージはpostgreSQL9.2系なので、インストールメディアからダウンロードします。
インストールメディアのマウント方法は以下を参考。

https://qiita.com/Higemal/items/68c768b80449a7efb7ac

```text:default_yum_list
[root@cent76-d1 ~]# yum --disablerepo=\* --enablerepo=local_dvd list postgre*
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
利用可能なパッケージ
postgresql.x86_64                        9.2.24-1.el7_5                local_dvd
postgresql-contrib.x86_64                9.2.24-1.el7_5                local_dvd
postgresql-devel.x86_64                  9.2.24-1.el7_5                local_dvd
postgresql-docs.x86_64                   9.2.24-1.el7_5                local_dvd
postgresql-jdbc.noarch                   9.2.1002-6.el7_5              local_dvd
postgresql-libs.x86_64                   9.2.24-1.el7_5                local_dvd
postgresql-odbc.x86_64                   09.03.0100-2.el7              local_dvd
postgresql-plperl.x86_64                 9.2.24-1.el7_5                local_dvd
postgresql-plpython.x86_64               9.2.24-1.el7_5                local_dvd
postgresql-pltcl.x86_64                  9.2.24-1.el7_5                local_dvd
postgresql-server.x86_64                 9.2.24-1.el7_5                local_dvd
postgresql-test.x86_64                   9.2.24-1.el7_5                local_dvd
[root@cent76-d1 ~]# 
```

インストールをします。

```text:yum_install
[root@cent76-d1 ~]# yum --disablerepo=\* --enablerepo=local_dvd install -y postgresql*
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
依存性の解決をしています

《中略》

========================================================================================================================
 Package                                   アーキテクチャー       バージョン                 リポジトリー          容量
========================================================================================================================
インストール中:
 postgresql                                x86_64                 9.2.24-1.el7_5             local_dvd            3.0 M
 postgresql-contrib                        x86_64                 9.2.24-1.el7_5             local_dvd            553 k
 postgresql-devel                          x86_64                 9.2.24-1.el7_5             local_dvd            952 k
 postgresql-docs                           x86_64                 9.2.24-1.el7_5             local_dvd            6.9 M
 postgresql-jdbc                           noarch                 9.2.1002-6.el7_5           local_dvd            448 k
 postgresql-libs                           x86_64                 9.2.24-1.el7_5             local_dvd            234 k
 postgresql-odbc                           x86_64                 09.03.0100-2.el7           local_dvd            273 k
 postgresql-plperl                         x86_64                 9.2.24-1.el7_5             local_dvd             83 k
 postgresql-plpython                       x86_64                 9.2.24-1.el7_5             local_dvd             96 k
 postgresql-pltcl                          x86_64                 9.2.24-1.el7_5             local_dvd             60 k
 postgresql-server                         x86_64                 9.2.24-1.el7_5             local_dvd            3.8 M
 postgresql-test                           x86_64                 9.2.24-1.el7_5             local_dvd            1.8 M
依存性関連でのインストールをします:
 copy-jdk-configs                          noarch                 3.3-10.el7_5               local_dvd             21 k
 java-11-openjdk-headless                  x86_64                 1:11.0.ea.28-7.el7         local_dvd             38 M
 javapackages-tools                        noarch                 3.4.1-11.el7               local_dvd             73 k
 libjpeg-turbo                             x86_64                 1.2.90-6.el7               local_dvd            134 k
 lksctp-tools                              x86_64                 1.0.17-2.el7               local_dvd             88 k
 perl                                      x86_64                 4:5.16.3-293.el7           local_dvd            8.0 M
 perl-Carp                                 noarch                 1.26-244.el7               local_dvd             19 k
 perl-Encode                               x86_64                 2.51-7.el7                 local_dvd            1.5 M
 perl-Exporter                             noarch                 5.68-3.el7                 local_dvd             28 k
 perl-File-Path                            noarch                 2.09-2.el7                 local_dvd             26 k
 perl-File-Temp                            noarch                 0.23.01-3.el7              local_dvd             56 k
 perl-Filter                               x86_64                 1.49-3.el7                 local_dvd             76 k
 perl-Getopt-Long                          noarch                 2.40-3.el7                 local_dvd             56 k
 perl-HTTP-Tiny                            noarch                 0.033-3.el7                local_dvd             38 k
 perl-PathTools                            x86_64                 3.40-5.el7                 local_dvd             82 k
 perl-Pod-Escapes                          noarch                 1:1.04-293.el7             local_dvd             51 k
 perl-Pod-Perldoc                          noarch                 3.20-4.el7                 local_dvd             87 k
 perl-Pod-Simple                           noarch                 1:3.28-4.el7               local_dvd            216 k
 perl-Pod-Usage                            noarch                 1.63-3.el7                 local_dvd             27 k
 perl-Scalar-List-Utils                    x86_64                 1.27-248.el7               local_dvd             36 k
 perl-Socket                               x86_64                 2.010-4.el7                local_dvd             49 k
 perl-Storable                             x86_64                 2.45-3.el7                 local_dvd             77 k
 perl-Text-ParseWords                      noarch                 3.29-4.el7                 local_dvd             14 k
 perl-Time-HiRes                           x86_64                 4:1.9725-3.el7             local_dvd             45 k
 perl-Time-Local                           noarch                 1.2300-2.el7               local_dvd             24 k
 perl-constant                             noarch                 1.27-2.el7                 local_dvd             19 k
 perl-libs                                 x86_64                 4:5.16.3-293.el7           local_dvd            688 k
 perl-macros                               x86_64                 4:5.16.3-293.el7           local_dvd             44 k
 perl-parent                               noarch                 1:0.225-244.el7            local_dvd             12 k
 perl-podlators                            noarch                 2.5.1-3.el7                local_dvd            112 k
 perl-threads                              x86_64                 1.87-4.el7                 local_dvd             49 k
 perl-threads-shared                       x86_64                 1.43-6.el7                 local_dvd             39 k
 python-javapackages                       noarch                 3.4.1-11.el7               local_dvd             31 k
 python-lxml                               x86_64                 3.2.1-4.el7                local_dvd            758 k
 tcl                                       x86_64                 1:8.5.13-8.el7             local_dvd            1.9 M
 tzdata-java                               noarch                 2018e-3.el7                local_dvd            185 k
 unixODBC                                  x86_64                 2.3.1-11.el7               local_dvd            413 k
 uuid                                      x86_64                 1.6.2-26.el7               local_dvd             55 k

トランザクションの要約
========================================================================================================================
インストール  12 パッケージ (+38 個の依存関係のパッケージ)

総ダウンロード容量: 71 M
インストール容量: 265 M

《中略》

インストール:
  postgresql.x86_64 0:9.2.24-1.el7_5                 postgresql-contrib.x86_64 0:9.2.24-1.el7_5        postgresql-devel.x86_64 0:9.2.24-1.el7_5         postgresql-docs.x86_64 0:9.2.24-1.el7_5         
  postgresql-jdbc.noarch 0:9.2.1002-6.el7_5          postgresql-libs.x86_64 0:9.2.24-1.el7_5           postgresql-odbc.x86_64 0:09.03.0100-2.el7        postgresql-plperl.x86_64 0:9.2.24-1.el7_5       
  postgresql-plpython.x86_64 0:9.2.24-1.el7_5        postgresql-pltcl.x86_64 0:9.2.24-1.el7_5          postgresql-server.x86_64 0:9.2.24-1.el7_5        postgresql-test.x86_64 0:9.2.24-1.el7_5         

依存性関連をインストールしました:
  copy-jdk-configs.noarch 0:3.3-10.el7_5         java-11-openjdk-headless.x86_64 1:11.0.ea.28-7.el7      javapackages-tools.noarch 0:3.4.1-11.el7      libjpeg-turbo.x86_64 0:1.2.90-6.el7              
  lksctp-tools.x86_64 0:1.0.17-2.el7             perl.x86_64 4:5.16.3-293.el7                            perl-Carp.noarch 0:1.26-244.el7               perl-Encode.x86_64 0:2.51-7.el7                  
  perl-Exporter.noarch 0:5.68-3.el7              perl-File-Path.noarch 0:2.09-2.el7                      perl-File-Temp.noarch 0:0.23.01-3.el7         perl-Filter.x86_64 0:1.49-3.el7                  
  perl-Getopt-Long.noarch 0:2.40-3.el7           perl-HTTP-Tiny.noarch 0:0.033-3.el7                     perl-PathTools.x86_64 0:3.40-5.el7            perl-Pod-Escapes.noarch 1:1.04-293.el7           
  perl-Pod-Perldoc.noarch 0:3.20-4.el7           perl-Pod-Simple.noarch 1:3.28-4.el7                     perl-Pod-Usage.noarch 0:1.63-3.el7            perl-Scalar-List-Utils.x86_64 0:1.27-248.el7     
  perl-Socket.x86_64 0:2.010-4.el7               perl-Storable.x86_64 0:2.45-3.el7                       perl-Text-ParseWords.noarch 0:3.29-4.el7      perl-Time-HiRes.x86_64 4:1.9725-3.el7            
  perl-Time-Local.noarch 0:1.2300-2.el7          perl-constant.noarch 0:1.27-2.el7                       perl-libs.x86_64 4:5.16.3-293.el7             perl-macros.x86_64 4:5.16.3-293.el7              
  perl-parent.noarch 1:0.225-244.el7             perl-podlators.noarch 0:2.5.1-3.el7                     perl-threads.x86_64 0:1.87-4.el7              perl-threads-shared.x86_64 0:1.43-6.el7          
  python-javapackages.noarch 0:3.4.1-11.el7      python-lxml.x86_64 0:3.2.1-4.el7                        tcl.x86_64 1:8.5.13-8.el7                     tzdata-java.noarch 0:2018e-3.el7                 
  unixODBC.x86_64 0:2.3.1-11.el7                 uuid.x86_64 0:1.6.2-26.el7                             

完了しました!
[root@cent76-d1 ~]# 
```


#2.postgreSQLの自動起動と実行

プロセスの自動起動を有効化します。

```text:process_enable
[root@cent76-d1 ~]# systemctl enable postgresql

[root@cent76-d1 ~]# systemctl is-enabled postgresql
enabled
[root@cent76-d1 ~]# 
```
プロセスの起動をしますが、エラーが表示されます。

```text:process_start_error
[root@cent76-d1 ~]# systemctl start postgresql
Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details.
[root@cent76-d1 ~]# 
```
エラーの原因はinitdb処理がされていないためなので、initdbを実行します。

```text:initdb
[root@cent76-d1 ~]# postgresql-setup initdb
Initializing database ... OK

[root@cent76-d1 ~]#  
```
これでプロセスが正常に起動します。

```text:process_start
[root@cent76-d1 ~]# systemctl start postgresql
[root@cent76-d1 ~]# 
```

#3.ローカル接続確認
まずはローカルで接続確認を行います。

```text:local_login
[root@cent76-d1 ~]# sudo -u postgres psql -U postgres
could not change directory to "/root"
psql (9.2.24)
Type "help" for help.

postgres=# 
postgres=# \q
[root@cent76-d1 ~]# 
```

#4.リモート接続設定(postgresql.conf)
リモート接続を受け付ける自セグメントを定義するため、以下コンフィグファイルに追記をします。最上１行が追記部分です。

ファイル：`/var/lib/pgsql/data/postgresql.conf`

```sh:pg_hba.conf
listen_addresses = '*'                  ### CUSTOM ADD ###
#listen_addresses = 'localhost'		# what IP address(es) to listen on;
```

#5.リモート接続設定(pg_hba.conf)
リモート接続してくるセグメントについての接続許可設定をするため、以下コンフィグファイルに追記をします。最下２行が追記部分です。

ファイル：`/var/lib/pgsql/data/pg_hba.conf`

```sh:pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

### CUSTOM ADD ###
host    all             postgres        10.0.1.0/24             trust
```

項目 | 内容 | 説明
--- | --- | ---
TYPE | host | 認証対象。'host'は任意の対象。
DATABASE | all | 対象DB。'all'は全てのDBを対象。
USER | postgres | 対象ユーザ。'postgres'でスーパーユーザのみの指定
ADDRESS | 10.0.1.0/24 | 接続元。指定のセグメントをCIDR表記で記載。
METHOD | trust | 認証方式。trustは認証無しでログイン可能。
※認証METHODをtrustとした場合、ユーザ名のみで接続可能なため、適切な構築タイミングでmd5認証やpeer認証に変更することを推奨します。

#5.pgAdminから接続
管理サーバ(Windows)にてpgAdminを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/cada6bda-5e79-d6d4-b542-0d7d79f19fb3.png)

オブジェクト - 作成 - サーバ を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/f8925d1c-bf78-f189-59dc-eaea3e56b90b.png)

一般タブ、接続タブにて各種設定を記載します。
なお、接続タブのパスワードについてはtrust認証のため無入力としています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/95247603-59a0-7f4a-f58d-10293c320082.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/6a7fb1fb-5e09-e18b-a3ec-d8a3a30febd2.png)

接続ができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/95eadc40-22d0-9aa5-8641-e287b10279b8.png)