CentOS7.5にPostgreSQL10をインストールする方法

CentOS7.5にPostgreSQL10をインストール、初期設定するまでのやり方を紹介します。

PostgreSQL10をインストールする

リポジトリを追加

始めにPostgreSQL10のリポジトリを追加します。


$ sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

他のバージョンを追加したい場合はこちらからリポジトリのURLを確認できます。

PostgreSQL: Linux downloads (Red Hat family)

インストール

下記コマンドを実行します。


$ sudo yum install -y --enablerepo=pgdg10 postgresql10 postgresql10-server
# 確認
$ psql --version
psql (PostgreSQL) 10.5

インストールが完了したら起動しましょう。


$ sudo systemctl start postgresql-10
Job for postgresql-10.service failed because the control process exited with error code. See "systemctl status postgresql-10.service" and "journalctl -xe" for details.

失敗しましたね。。。

原因を調べてみると


$ sudo tail -n 50 /var/log/message
Sep  3 11:54:48 150-95-201-73 systemd: Starting PostgreSQL 10 database server...
Sep  3 11:54:48 150-95-201-73 postgresql-10-check-db-dir: "/var/lib/pgsql/10/data/" is missing or empty.
Sep  3 11:54:48 150-95-201-73 postgresql-10-check-db-dir: Use "/usr/pgsql-10/bin/postgresql-10-setup initdb" to initialize the database cluster.
Sep  3 11:54:48 150-95-201-73 postgresql-10-check-db-dir: See /usr/share/doc/postgresql10-10.5/README.rpm-dist for more information.
Sep  3 11:54:48 150-95-201-73 systemd: postgresql-10.service: control process exited, code=exited status=1
Sep  3 11:54:48 150-95-201-73 systemd: Failed to start PostgreSQL 10 database server.
Sep  3 11:54:48 150-95-201-73 systemd: Unit postgresql-10.service entered failed state.
Sep  3 11:54:48 150-95-201-73 systemd: postgresql-10.service failed.

DBクラスタを初期化しろってことなので、下記コマンドを実行しリトライします。


$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK

# リトライ
$ sudo systemctl start postgresql-10

無事に起動しました。

初期設定

パスワード設定

まずpostgresユーザのパスワードを設定します。


# インストール時に追加されているpostgresユーザに切り替え
$ sudo su - postgres

# PostgreSQLに接続
-bash-4.2$ psql
psql (10.5)
Type "help" for help.

# パスワード変更
postgres=\# alter role postgres with password 'パスワード';
ALTER ROLE

# 接続を解除
postgres=# \q
-bash-4.2$ exit
logout

アクセス設定

各ユーザにパスワード認証でログインできるよう設定を変更します。


# rootユーザに切り替え
$ sudo su -

# 設定ファイルを編集
$ vim /var/lib/pgsql/10/data/pg_hba.conf
# 下記のように変更 
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 password

# 再起動
$ sudo systemctl restart postgresql-10

パスワード認証でログインできることを確認します。


$ psql -U postgres
Password for user postgres: # 設定したパスワードを入力
psql (10.5)
Type "help" for help.

postgres=#

無事にパスワードが通って接続できましたね。

自動起動

サーバ起動時にPostgreSQLが自動起動するように設定します。


$ sudo systemctl enable postgresql-10

まとめ

普段はMySQLを利用することが多いので、久々にPostgreSQLをインストールしてみて結構苦戦しました。

今回は導入手順の紹介だけでしたが、今後もう少し掘り下げた情報を記事にしようと思います。

ではまた。

コメントを残す

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

ABOUTこの記事をかいた人

Yusuke Ito

20代後半プログラミング未経験から転職し、現在はWEBエンジニアとして働いています。 バックエンドが本職ですが、1人でサービスを立ち上げるためフロントエンドも勉強中です。 最近はDAppsやNEMの開発に夢中です。