CentOSにDBインストール:PostgreSQL編

何かと必要になるデータベースのインストール。まずは、オープンソースRDBMSで有名な「PostgreSQL」から。個人的にはMySQLよりも好きです。

今回はyumからインストールします。

[root@sakura ~]# yum install postgresql-server postgresql-devel
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ postgresql-devel.x86_64 0:9.2.23-3.el7_4 を インストール
--> 依存性の処理をしています: postgresql-libs(x86-64) = 9.2.23-3.el7_4 のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
--> 依存性の処理をしています: postgresql(x86-64) = 9.2.23-3.el7_4 のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
--> 依存性の処理をしています: libpgtypes.so.3()(64bit) のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
--> 依存性の処理をしています: libecpg_compat.so.3()(64bit) のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
--> 依存性の処理をしています: libecpg.so.6()(64bit) のパッケージ: postgresql-devel-9.2.23-3.el7_4.x86_64
---> パッケージ postgresql-server.x86_64 0:9.2.23-3.el7_4 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ postgresql.x86_64 0:9.2.23-3.el7_4 を インストール
---> パッケージ postgresql-libs.x86_64 0:9.2.23-3.el7_4 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================================================================================================================================================
 Package                                                           アーキテクチャー                                       バージョン                                                        リポジトリー                                             容量
==========================================================================================================================================================================================================================================================
インストール中:
 postgresql-devel                                                  x86_64                                                 9.2.23-3.el7_4                                                    updates                                                 952 k
 postgresql-server                                                 x86_64                                                 9.2.23-3.el7_4                                                    updates                                                 3.8 M
依存性関連でのインストールをします:
 postgresql                                                        x86_64                                                 9.2.23-3.el7_4                                                    updates                                                 3.0 M
 postgresql-libs                                                   x86_64                                                 9.2.23-3.el7_4                                                    updates                                                 234 k

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

総ダウンロード容量: 8.0 M
インストール容量: 37 M
Is this ok [y/d/N]:y
Downloading packages:
(1/4): postgresql-libs-9.2.23-3.el7_4.x86_64.rpm                                                                                                                                                                                   | 234 kB  00:00:00
(2/4): postgresql-9.2.23-3.el7_4.x86_64.rpm                                                                                                                                                                                        | 3.0 MB  00:00:00
(3/4): postgresql-devel-9.2.23-3.el7_4.x86_64.rpm                                                                                                                                                                                  | 952 kB  00:00:00
(4/4): postgresql-server-9.2.23-3.el7_4.x86_64.rpm                                                                                                                                                                                 | 3.8 MB  00:00:01
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                                                                      5.9 MB/s | 8.0 MB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : postgresql-libs-9.2.23-3.el7_4.x86_64                                                                                                                                                                                     1/4
  インストール中          : postgresql-9.2.23-3.el7_4.x86_64                                                                                                                                                                                          2/4
  インストール中          : postgresql-server-9.2.23-3.el7_4.x86_64                                                                                                                                                                                   3/4
  インストール中          : postgresql-devel-9.2.23-3.el7_4.x86_64                                                                                                                                                                                    4/4
  検証中                  : postgresql-9.2.23-3.el7_4.x86_64                                                                                                                                                                                          1/4
  検証中                  : postgresql-server-9.2.23-3.el7_4.x86_64                                                                                                                                                                                   2/4
  検証中                  : postgresql-libs-9.2.23-3.el7_4.x86_64                                                                                                                                                                                     3/4
  検証中                  : postgresql-devel-9.2.23-3.el7_4.x86_64                                                                                                                                                                                    4/4

インストール:
  postgresql-devel.x86_64 0:9.2.23-3.el7_4                                                                                    postgresql-server.x86_64 0:9.2.23-3.el7_4

依存性関連をインストールしました:
  postgresql.x86_64 0:9.2.23-3.el7_4                                                                                        postgresql-libs.x86_64 0:9.2.23-3.el7_4

完了しました!

yum install postgresqlで。後々にpostgresql-develも必要になるので、あらかじめインストールしておきます。

インストールされるバージョンは9.2系です。ちょっと古いです。

インストールが終わったら、DBの初期化を行います。

[root@sakura ~]# postgresql-setup initdb
Initializing database ... OK

[root@sakura ~]#

initdbが終わったら、PostgreSQL実行用のユーザーpostgresできているはずなので、これにsuします。postgresqlユーザーのホームディレクトリ内にあるdataディレクトリ配下に設定ファイルが出来ているはずです。

[root@sakura ~]# su - postgres
最終ログイン: 2018/03/29 (木) 22:17:53 JST日時 pts/0
-bash-4.2$
-bash-4.2$ ls
backups  data  initdb.log
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -la
合計 20
drwx------   6 postgres postgres  115  3月 29 22:20 .
drwxr-xr-x. 33 root     root     4096  3月 29 22:15 ..
-rw-------   1 postgres postgres   33  3月 29 22:18 .bash_history
-rw-r--r--   1 postgres postgres   85 12月  9 01:52 .bash_profile
drwxr-xr-x   3 postgres postgres   17  3月 29 22:17 .cache
drwxr-xr-x   3 postgres postgres   17  3月 29 22:17 .config
drwx------   2 postgres postgres    6 12月  9 01:52 backups
drwx------  15 postgres postgres 4096  3月 29 22:20 data
-rw-------   1 postgres postgres 1346  3月 29 22:20 initdb.log
-bash-4.2$
-bash-4.2$
-bash-4.2$ cd data/
-bash-4.2$ ls -al
合計 44
drwx------ 15 postgres postgres  4096  3月 29 22:20 .
drwx------  6 postgres postgres   115  3月 29 22:20 ..
-rw-------  1 postgres postgres     4  3月 29 22:20 PG_VERSION
drwx------  5 postgres postgres    38  3月 29 22:20 base
drwx------  2 postgres postgres  4096  3月 29 22:20 global
drwx------  2 postgres postgres    17  3月 29 22:20 pg_clog
-rw-------  1 postgres postgres  4232  3月 29 22:20 pg_hba.conf
-rw-------  1 postgres postgres  1636  3月 29 22:20 pg_ident.conf
drwx------  2 postgres postgres     6  3月 29 22:20 pg_log
drwx------  4 postgres postgres    34  3月 29 22:20 pg_multixact
drwx------  2 postgres postgres    17  3月 29 22:20 pg_notify
drwx------  2 postgres postgres     6  3月 29 22:20 pg_serial
drwx------  2 postgres postgres     6  3月 29 22:20 pg_snapshots
drwx------  2 postgres postgres     6  3月 29 22:20 pg_stat_tmp
drwx------  2 postgres postgres    17  3月 29 22:20 pg_subtrans
drwx------  2 postgres postgres     6  3月 29 22:20 pg_tblspc
drwx------  2 postgres postgres     6  3月 29 22:20 pg_twophase
drwx------  3 postgres postgres    58  3月 29 22:20 pg_xlog
-rw-------  1 postgres postgres 19844  3月 29 22:20 postgresql.conf
-bash-4.2$
-bash-4.2$

いったんsuperuserに戻り、systemctlでpostgreSQLの自動起動を有効にしておきます。

[root@sakura ~]# systemctl enable postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
[root@sakura ~]#

あとは再起動などを

[root@sakura ~]# systemctl restart postgresql

で行います。

外部から接続することになると思うので、PostgreSQLへの接続ができるようにfirewallにサービスの追加を行っておきます。PostgreSQLの設定は、すでにサービス定義が存在するので、追加するのみとなります。

[root@sakura data]# firewall-cmd --permanent --zone=vpn --add-service=postgresql
success
[root@sakura data]#
[root@sakura data]# firewall-cmd --reload
success
[root@sakura data]#
[root@sakura data]# firewall-cmd --permanent --zone=vpn --list-all
vpn (active)
  target: default
  icmp-block-inversion: no
  interfaces: tun0
  sources:
  services: http https db2 ssh postgresql
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@sakura data]#

つぎにpostgresユーザにチェンジして、外部から接続できるようにpg_hba.confを修正します。

VPN経由のアドレス領域が10.8.0.1/24なのでそれらのネットワークからPostgreSQLに接続できるように下記の設定を追加します(最後の赤字の行)。

# 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
host    postgres        postgres        10.8.0.1/24     md5

追記したら、PostgreSQLの設定をreloadします。

-bash-4.2$
-bash-4.2$ systemctl reload postgresql
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
-bash-4.2$

systemctlでのreload/start/stop/restartなんちゃらかんちゃらは、一般ユーザでも実行可能ですが、rootのパスワードが必要です。sudoのほうが安全かもしれません。

最後に、念のためデフォルトのDBへ接続するpostgresユーザーのパスワードを変更しておきます。コマンドラインでPostgreSQLに接続する場合は、psqlコマンドを使用します。OSユーザのpostgresはすでにパスが通っているので、そのままコマンドを実行します。特にデータベースやユーザーを指定していないのでデフォルトのユーザーpostgres、デフォルトのデータベースpostgresに接続されています。

-bash-4.2$ psql
psql (9.2.23)
"help" でヘルプを表示します.

postgres=#
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=#
postgres=# \q
-bash-4.2$

ALTER USER構文でパスワードを設定します。このパスワードは後々、クライアントからの接続に使用するのと、単純すぎるパスワードに設定しないように気を付けてください。

Windows環境から接続する場合、適当なSQLクライアントを用意しておきます。私は下記のA5:SQLというツールを利用させていただいています。

image

設定はツールにより異なりますので割愛しますが、こんな感じです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください