PostgreSQL 13のインストール (CentOS 8編)

スポンサーリンク

CentOS8.2に、PostgreSQLをインストールする方法についてまとめます。本記事はPostgreSQL 13.1に対応しています。バージョンによって若干の差異がありますので、本記事と異なるバージョンを使用する場合はpostgresql.orgを参照ください。

PostgreSQL ダウンロードURLの確認

postgresql.orgをブラウザで開きます。

PostgreSQL CentOS版のダウンロード01

OSとディストリビューションを選びます。

PostgreSQL CentOS版のダウンロード02

「PostgreSQLバージョン」「OSバージョン」「CPUアーキテクチャ」を選択すると、インストール時に必要となるコマンドが羅列されます。

PostgreSQL CentOS版のダウンロード03

PostgreSQL インストール

PostgreSQL インストール

PostgreSQL用途のリポジトリを登録します。

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

PostgreSQL Serverをインストールします。

dnf -qy module disable postgresql
dnf install -y postgresql13-server

マニュアルの参照

manコマンドでPostgreSQLのマニュアルを調べられるようにしておくと便利でしょう。/etc/man_db.confを以下のように編集します。

# vi /etc/man_db.conf 

 <omitted>

# every automatically generated MANPATH includes these fields
#
#MANDATORY_MANPATH                      /usr/src/pvm3/man
#
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANDATORY_MANPATH                       /usr/pgsql-13/share/man/

以下のようなマニュアルが参照できる事を確認します。

man psql
man initdb

環境変数の設定

環境変数PGDATAを設定します。PGDATAはPostgreSQLのデータファイルなどを格納するディレクトリです。

CentOS8系とPostgreSQL13の組み合わせではrpm内で自動的に環境変数が組み込まれる仕組みが備わっているため、明示的な操作は不要です。念のため、自動的にPGDATAが設定されているかどうかを確認しましょう。

[root@centos82 ~]# sudo su - postgres
[postgres@centos82 ~]$ env | grep PGDATA
PGDATA=/var/lib/pgsql/13/data
[postgres@centos82 ~]$ 

PostgreSQL 初期データベースの作成

PostgreSQLのデータベースを作成します。初回作成時にデータベースの文字コードなどを指定する事ができます。

postgresql-13-setupというスクリプトを実行することで、初期データベースが作成できます。このスクリプトを読むと、PGSETUP_INITDB_OPTIONSという環境変数で文字コードなどを指定できる事ができます。環境変数に設定する値は「man initdb」で調べる事ができます。設定例は以下の通りです。

export PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --locale=ja_JP.UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8"

初期データベースを作成します。

/usr/pgsql-13/bin/postgresql-13-setup initdb

データベースを起動します。

systemctl enable postgresql-13 --now

postgresユーザにスイッチし、${PGDATA}配下にデータベースを構成するファイル群が作成されている事を確認します。

[root@centos82 ~]# su - postgres
最終ログイン: 2020/11/28 (土) 13:32:56 JST日時 pts/1
[postgres@centos82 ~]$ echo ${PGDATA}
/var/lib/pgsql/13/data
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ ls -l 
total 0
drwxr-xr-x 3 root root 36 Nov 28 13:34 13
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ ls -l 13
total 8
drwx------ 20 postgres postgres 4096 Nov 28 13:34 data
-rw-------  1 postgres postgres  934 Nov 28 13:34 initdb.log
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ 
[postgres@centos82 ~]$ ls -l 13/data
total 64
drwx------ 5 postgres postgres    41 Nov 28 13:34 base
-rw------- 1 postgres postgres    30 Nov 28 13:34 current_logfiles
drwx------ 2 postgres postgres  4096 Nov 28 13:34 global
drwx------ 2 postgres postgres    32 Nov 28 13:34 log
drwx------ 2 postgres postgres     6 Nov 28 13:34 pg_commit_ts
drwx------ 2 postgres postgres     6 Nov 28 13:34 pg_dynshmem
-rw------- 1 postgres postgres  4548 Nov 28 13:34 pg_hba.conf
-rw------- 1 postgres postgres  1636 Nov 28 13:34 pg_ident.conf

 <omitted>

[postgres@centos82 ~]$ 

想定通りの文字コードが設定されている事を確認します。

[postgres@centos82 ~]$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

[postgres@centos82 ~]$ 
タイトルとURLをコピーしました