(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【RHEL】PostgreSQLをインストールした上でサンプルデータベースを作成する

スポンサーリンク

はじめに

OSSのデータベースであるPostgreSQL(ポスグレエスキューエル)をRed Hat Enterprise Linuxにインストールし、テスト用のデータベースを作成するまでの流れを実施しました。そのコマンドの結果と合わせてメモとして残しておきます。

環境情報
  • Red Hat Enterprise Linux VERSION="9.3
  • postgresql-16

PostgreSQLのインストール

リポジトリに関するファイルのインストールを行い

# dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
...
Installed:
  pgdg-redhat-repo-42.0-46PGDG.noarch                                                                                                                 
Complete!

まだ未インストールであることを確認した上で

# ls /usr/
bin  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

下記にてインストールを実施しました。

# dnf -y install postgresql16-server
...
Installed:
  postgresql16-16.4-1PGDG.rhel9.x86_64         postgresql16-libs-16.4-1PGDG.rhel9.x86_64         postgresql16-server-16.4-1PGDG.rhel9.x86_64        
Complete!

インストール後は/usr/配下にディレクトリが作成されています。

# ls /usr/pgsql-16/
bin  lib  share

データベースクラスタの作成

インストールが完了すると以下のOSユーザが作成されているので

# id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)

同ユーザに切り替えた上で

# sudo su - postgres

initdbコマンドを利用してデータベースクラスターを作成します。尚、パスワードの設定が求められます。

$ /usr/pgsql-16/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

Data page checksums are disabled.

Enter new superuser password: 
Enter it again: 

fixing permissions on existing directory /var/lib/pgsql/16/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    /usr/pgsql-16/bin/pg_ctl -D /var/lib/pgsql/16/data -l logfile start

ここまで来るとサービスの起動が可能となります。

# systemctl start postgresql-16.service
# systemctl status postgresql-16.service
● postgresql-16.service - PostgreSQL 16 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; disabled; preset: disabled)
     Active: active (running) since...
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 812277 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 812282 (postgres)
      Tasks: 7 (limit: 24540)
     Memory: 17.4M
        CPU: 42ms
     CGroup: /system.slice/postgresql-16.service
             ├─812282 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ├─812283 "postgres: logger "
             ├─812284 "postgres: checkpointer "
             ├─812285 "postgres: background writer "
             ├─812287 "postgres: walwriter "
             ├─812288 "postgres: autovacuum launcher "
             └─812289 "postgres: logical replication launcher "
...

データベースを作成

psqlコマンドで現在のデータベースが確認できるので

# sudo su - postgres
$ psql -l
Password for user postgres: 
                                                  List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+---------+-------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | C       | C     |            |           | 
 template0 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
(3 rows)

createdbコマンドでデータベースの作成を行います。

$ createdb mydb
Password: 
$ 

データベースが作成できていることがことが確認できました。

$ psql -l
Password for user postgres: 
                                                  List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+---------+-------+------------+-----------+-----------------------
 mydb      | postgres | UTF8     | libc            | C       | C     |            |           | 
 postgres  | postgres | UTF8     | libc            | C       | C     |            |           | 
 template0 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
(4 rows)
$ dropdb mydb
Password: 
$ psql -l
Password for user postgres: 
                                                  List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+---------+-------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | C       | C     |            |           | 
 template0 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | C       | C     |            |           | =c/postgres          +
           |          |          |                 |         |       |            |           | postgres=CTc/postgres
(3 rows)

終わりに

RHEL環境でポスグレのインストールを行いました。
尚、データベースクラスタの作成前にpsqlコマンドを押下すると以下になるので

$ psql -l
psql: error: connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

クラスター作成前後の動作確認としてコマンドを打つことで不具合時の切り分けができるかもしれません。

以上、ご参考になれば幸いです。