はじめに
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?
クラスター作成前後の動作確認としてコマンドを打つことで不具合時の切り分けができるかもしれません。
以上、ご参考になれば幸いです。