目的と背景
インストール手順が点在しているため、ひと塊になった手順書が欲しかった
本ドキュメントの対象
- CentOS 7.5 (systemd)
- Postgresql 9.6 (CentOS公式は9.2)
インストール
yum リポジトリを登録する
https://yum.postgresql.org/repopackages.php から適切なリポジトリを選択し、yum install <選択したRPMのURL>
を行う
$ sudo yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
pgdg-centos96 noarch 9.6-3 /pgdg-centos96-9.6-3.noarch 2.7 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 2.7 k
Installed size: 2.7 k
Is this ok [y/d/N]: y
(中略)
Installed:
pgdg-centos96.noarch 0:9.6-3
Complete!
対象のパッケージをインストール
$ sudo yum install postgresql96-server
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
postgresql96-server x86_64 9.6.9-1PGDG.rhel7 pgdg96 4.3 M
Installing for dependencies:
postgresql96 x86_64 9.6.9-1PGDG.rhel7 pgdg96 1.4 M
postgresql96-libs x86_64 9.6.9-1PGDG.rhel7 pgdg96 315 k
Transaction Summary
================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 6.0 M
Installed size: 26 M
Is this ok [y/d/N]: y
(中略)
Installed:
postgresql96-server.x86_64 0:9.6.9-1PGDG.rhel7
Dependency Installed:
postgresql96.x86_64 0:9.6.9-1PGDG.rhel7
postgresql96-libs.x86_64 0:9.6.9-1PGDG.rhel7
Complete!
初期設定を行う
dbの初期化を行う
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
ポートを開放する(optional)
postgresqlのポートへ外部からアクセスさせたい場合、この手順を実施してください。
Listenアドレスの設定
すべてのIPアドレスに対しての受信を行うようにします。
$ sudo vi /var/lib/pgsql/9.6/data/postgresql.conf
上記のように設定ファイルを開いて、listen_addresses = '*'
を追記してください。
# - Connection Settings -
+listen_addresses = '*'
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
受信許可アドレスの設定
$ sudo vi /var/lib/pgsql/9.6/data/pg_hba.conf
以下のように、すべてのIPアドレス(v4)からの接続を許容します。
# IPv4 local connections:
-host all all 127.0.0.1/32 ident
+#host all all 127.0.0.1/32 ident
+host all all 0.0.0.0/0 md5
# IPv6 local connections:
firewallのポートを開ける
postgresqlのポート設定がデフォルトの場合は以下のコマンドでポートを開ける。
$ sudo firewall-cmd --add-service=postgresql --zone=public --permanent
success
$ sudo firewall-cmd --reload
success
サービス起動
systemdへ登録を行う
準備が完了したのでとりあえず、postgresqlを有効な状態にする。
$ sudo systemctl daemon-reload
$ sudo systemctl enable postgresql-9.6.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service.
サービスを開始する
$ sudo systemctl start postgresql-9.6
[da@centos2 ~]$ sudo systemctl status postgresql-9.6
● postgresql-9.6.service - PostgreSQL 9.6 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.6.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2018-07-17 12:35:35 EDT; 5s ago
(中略)
Jul 17 12:35:35 centos2 systemd[1]: Started PostgreSQL 9.6 database server.
Hint: Some lines were ellipsized, use -l to show in full
ログイン
ログイン設定を行う
postgresユーザーでpsqlからアクセスし、DBの作成及び、アクセス権の設定を行う。
$ sudo -u postgres /usr/pgsql-9.6/bin/psql -U postgres
psql (9.6.9)
Type "help" for help.
postgres=# --ユーザー作成(注意:testというパスワードのため、そのまま使用しないこと)
postgres=# CREATE ROLE test WITH LOGIN PASSWORD 'test';
CREATE ROLE
postgres=# --DBの作成
postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres=# --DBの所有権を移転
postgres=# ALTER DATABASE test OWNER TO test;
ALTER DATABASE
postgres=# --作業完了
postgres=# \q
ログイン確認を行う(ローカルサーバー上)
# 以下の192.168.1.2はサーバーのIPアドレスを指定すること
$ /usr/pgsql-9.6/bin/psql -h 192.168.1.2 -U test
Password for user test:
psql (9.6.9)
Type "help" for help.
test=> \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
test | test | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
トラブルシューティング
サービスが起動しない
指示の通り、journalctl -xe
を実行してみてください。
"/var/lib/pgsql/9.6/data/" is missing or empty.
と言われた場合は、「dbの初期化を行う」を参照してください。
参考文献
- yumでPostgreSQLをインストールしてみよう
- PostgreSQLでユーザー(ロール)を追加してテーブルにアクセスする
- CentOS7でポートを開放する方法
- yum でインストールされるドキュメント: /usr/share/doc/postgresql96-9.6.9/README.rpm-dist