中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【raspberry PI 3B +】CentOS7にPostgreSQLをインストールし設定する

1.初期設定

まずはyumで【PostgreSQL】インストールします。

[root@localhost ~]# yum -y install postgresql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
・
・
省略
・
・
Dependency Installed:
  postgresql.armv7hl 0:9.2.24-1.el7_5  postgresql-libs.armv7hl 0:9.2.24-1.el7_5

Complete!


一応バージョンを確認しておきます。

[root@localhost ~]# psql --version
psql (PostgreSQL) 9.2.24


PostgreSQLの初期セットアップを行います。
データベースクラスタを新規で作成します。

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

あっという間に完了します。


確認してみます。
データベースの保存先はデフォルトで【/var/lib/pgsql/data/】になっています。

[root@localhost ~]# cd /var/lib/pgsql/data/
[root@localhost data]# ls
base         pg_ident.conf  pg_serial     pg_tblspc    postgresql.conf
global       pg_log         pg_snapshots  pg_twophase
pg_clog      pg_multixact   pg_stat_tmp   PG_VERSION
pg_hba.conf  pg_notify      pg_subtrans   pg_xlog

これで初期化が完了しました。


ではPostgreSQLを自動起動するように設定します。

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

以上で初期設定は完了です。
早速PostgreSQLの設定をしていきます。

2.PostgreSQLの設定

①ユーザー確認

PostgreSQLをインストールしたことで【postgres】というユーザーが
自動的に作成されています。

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

②ログイン

まずはスーパーユーザーでログインします。
先程確認した【postgres】になります。

[root@localhost ~]# su postgres
bash-4.2$ psql
could not change directory to "/root"
psql (9.2.24)
Type "help" for help.

これでログイン出来ました。

では現状確認として
ユーザーの一覧とデータベースの一覧を見てみます。

ユーザー一覧

postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}


データベース一覧

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

とりあえずデフォルトの状態を確認出来ました。

③ユーザー(ロール)の作成

データベースにアクセスできるユーザーを作成します。
ユーザーの作成はpsqlではなくシェル上で行います。
今回は
ユーザー名:test_user
パスワード:password
を作成してみます。

postgres=# \q
bash-4.2$ createuser -P  test_user
could not change directory to "/root"
Enter password for new role:
Enter it again:

④データベースの作成

bash-4.2$ createdb -O test_user testdb
could not change directory to "/root"

⑤外部ホストから接続出来るように変更する。

postgresSQLはデフォルトでは自ホストからしか繋げないようになっています。
今回はテスト用に外部ホストから接続したいので設定を変更します。
変更は【postgresql.conf】を編集します。

[root@localhost ~]# cd /var/lib/pgsql/data/
[root@localhost data]# vi postgresql.conf
#listen_addresses = 'localhost'
listen_addresses = '*'
#port = 5432                        
port = 5432 


更に【pg_hba.conf】を編集します。
今回は全IPから【testdb】に対して【test_user】というユーザー名での接続のみ許可しました。

[root@localhost data]# vi pg_hba.conf
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    testdb             test_user             0.0.0.0/0            password


【postgresql】の再起動

[root@localhost data]# systemctl stop postgresql.service
[root@localhost data]# systemctl start postgresql.service


ポートの開放

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=postgresql
success
[root@localhost ~]# systemctl restart firewalld.service

3.接続してみる

外部ホストからデータベースに接続してみます。
今回はツールとして【A5M2】を使ってみました。
f:id:tsu--kun:20190617161420p:plain


無事接続が確認出来ました。