6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSにpostgresql-9.6をyum経由でインストールする方法

Last updated at Posted at 2018-07-17

目的と背景

インストール手順が点在しているため、ひと塊になった手順書が欲しかった

本ドキュメントの対象

  • 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の初期化を行う」を参照してください。

参考文献

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?