PostgreSQL 14のインストール Ubuntu 22.04編
PostgreSQL 14のインストール
以下のコマンドでインストール
$ sudo apt install postgresql postgresql-contrib
systemctl コマンドで、PostgreSQL サービスが動いているか確認
$ systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2024-03-24 21:39:22 JST; 8min ago
Process: 8372 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 8372 (code=exited, status=0/SUCCESS)
CPU: 2ms
3月 24 21:39:22 taka-X202E systemd[1]: Starting PostgreSQL RDBMS...
3月 24 21:39:22 taka-X202E systemd[1]: Finished PostgreSQL RDBMS.
postgres ユーザーのパスワードの変更
インストールするとデータベースの管理ユーザーとして、ユーザー postgresが作成されています。postgres ユーザーを利用できるようにするため、ユーザー postgresのパスワードを変更します。
$ sudo passwd postgres
PostgreSQL 14の動作確認
インストールが完了すると他のOSではインストール後に行うデータベースクラスタの作成が、Ubuntuだと、インストール時点で作成されています。
postgresql ユーザーになり、psql コマンドで データベースに接続します。
su コマンドで一時的に postgresql になります。
$ su - postgres
パスワード:
postgres@:~$
psql コマンドで データベースに接続します。
postgres@:~$ psql
psql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1))
Type "help" for help.
postgres=#
SHOW コマンドで data_directory パラメータの値を確認。
postgres=# SHOW data_directory;
data_directory
-----------------------------
/var/lib/postgresql/14/main
(1 row)
\l コマンドでデータベースの一覧を表示。
postgres=# \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)
もう一度、データベースクラスタの動作確認
Ubuntu版のPostgreSQLは、複数のデータベースクラスタが動作するように各種コマンドが設計されているようです。
先程、systemctl で指定した postgresql.service は、複数のデータベースクラスタを管理するように設計されていて、個々のデータベースクラスタの状態を表示してはくれないようです。インストール時に作成されたデータベースクラスタの起動状態を表示する場合は、postgresql@14-main.service と指定するようです。
postgres@:~$ systemctl status postgresql@14-main.service
● postgresql@14-main.service - PostgreSQL Cluster 14-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; vendor preset: enabled)
Active: active (running) since Sun 2024-04-07 16:57:06 JST; 2 days ago
Main PID: 871 (postgres)
Tasks: 7 (limit: 4458)
Memory: 11.6M
CPU: 17.661s
CGroup: /system.slice/system-postgresql.slice/postgresql@14-main.service
├─871 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/14/main -c config_file=/etc/postgresql/14/main/postgresql.conf
├─898 "postgres: 14/main: checkpointer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
├─899 "postgres: 14/main: background writer " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
├─900 "postgres: 14/main: walwriter " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
├─901 "postgres: 14/main: autovacuum launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
├─903 "postgres: 14/main: stats collector " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
└─904 "postgres: 14/main: logical replication launcher " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
PL/Tcl, PL/Python3 のインストール
PL/Tclを使いたい場合、標準パッケージに格納されていないので、追加にインストールします。以下のコマンドでインストールできるはずだったのですが、
$ sudo apt install postgresql-pltcl-14
実際に試したところ、以下のエラーとなりました
$ sudo apt install postgresql-pltcl-14
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
E: パッケージ postgresql-pltcl-14 が見つかりません
そのため、Ubuntuの公式リポジトリの postgresql14関連が格納されている場所からpostgresql-pltcl-14_14.13-0ubuntu0.22.04.1_amd64.debをダウンロードして、ダウンロードしたファイルをインストール
# sudo apt install ./postgresql-pltcl-14_14.13-0ubuntu0.22.04.1_amd64.deb
同様にPL/Python3も postgresql-plpython3-14_14.13-0ubuntu0.22.04.1_amd64.debをダウンロードして、ダウンロードしたファイルをインストール
# sudo apt install ./postgresql-plpython3-14_14.13-0ubuntu0.22.04.1_amd64.deb
PL/Tclを及び、PL/Python3を有効化するために plsql から以下のSQLコマンドを実施
postgres=# CREATE EXTENSION pltcl;
postgres=# CREATE EXTENSION plpython3u;