PostgreSQL 14, pgAdmin 4, PostGIS 3 のインストール(Ubuntu 上)
インストールは,PostgreSQL の APT リポジトリの公式手順 https://wiki.postgresql.org/wiki/Apt と,pgAdmin 4 の APT リポジトリの公式手順 https://www.pgadmin.org/download/pgadmin-4-apt/ に従う.
PostgreSQL 14 への修正提供は 2026 年 11 月 12 日に終了する予定である.新規に構築する場合は,このページのコマンド中の「14」を,サポートが継続しているバージョン(18 など)に読み替えて実行する.
【目次】
- 前準備
- PostgreSQL 14, pgAdmin 4, PostGIS 3 のインストール(Ubuntu 上)
- peer 認証の確認とパスワード認証の設定
- PostgreSQL データベースサーバの起動と終了
- psql の基本操作
- テーブル定義とレコード挿入
- PostGIS の有効化
- pgAdmin4 のセットアップ
【関連する外部ページ】
- PostgreSQL Web ページ: https://www.postgresql.org/
- カーネル設定: https://www.postgresql.jp/document/14/html/kernel-resources.html
- インストール: https://www.postgresql.jp/document/14/html/installation.html
- クライアント認証 (pg_hba.conf): https://www.postgresql.jp/document/14/html/client-authentication.html
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
PostgreSQL 14, pgAdmin 4, PostGIS 3 のインストール(Ubuntu 上)
- PostgreSQL の APT リポジトリ (PGDG) の設定
端末で,次のコマンドを実行する。postgresql-common パッケージに含まれるスクリプトが,リポジトリキーの取得と /etc/apt/sources.list.d/pgdg.sources の作成を行う.
# パッケージリストの情報を更新 sudo apt update sudo apt -y install curl ca-certificates gnupg lsb-release postgresql-common sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -yエラーメッセージが出ないことを確認する.
- pgAdmin 4 の APT リポジトリの設定
端末で,次のコマンドを実行する。リポジトリキーを /etc/apt/keyrings に置き,そのキーで署名検証を行うようにリポジトリを登録する.
sudo install -d /etc/apt/keyrings curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/keyrings/packages-pgadmin-org.gpg sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'
- パッケージ情報の更新
# パッケージリストの情報を更新 sudo apt update
- インストール
pgadmin4 はデスクトップモードと Web モードの両方をインストールするパッケージである。デスクトップモードのみのときは pgadmin4-desktop,Web モードのみのときは pgadmin4-web を指定する.
sudo apt -y install pgadmin4 postgresql-14 postgresql-14-postgis-3
- インストール直後なので,確認のため,サーバを手動で起動して停止してみて,エラーメッセージが出ないことを確認する
sudo pg_ctlcluster 14 main restart sudo pg_ctlcluster 14 main status
- PostgreSQL の動作確認
Ubuntu のサービスアカウント postgres と peer 認証により,PostgreSQL の psql を使ってみる.
「\c」により,使用されている PostgreSQL のロール名と,オープンされているデータベース名を確認.
確認したら,「\q」により終了.
sudo -u postgres psql \c \q
- データベースの確認
postgres, template0, template1 の 3 つのデータベースが表示されることを確認.
sudo -u postgres psql \l \q
- psql のバージョン確認
psql --version
peer 認証の確認とパスワード認証の設定
peer 認証の確認
- PostgreSQL サービスアカウント (service account)の確認
PostgreSQL サービスアカウントは,Postgres サーバの起動等に使うもの.Ubuntu では,既定(デフォルト)で,peer 認証が行えるようにも設定されている.
Ubuntu でパッケージを使って PostgreSQL をインストールすると,PostgreSQL サービスアカウント(ユーザ名は「postgres」)が自動的に作成される.
次のコマンドで確認できる.
grep postgres /etc/passwd* 2 番目のフィールドの「x」は,パスワードハッシュが /etc/shadow に格納されていることを示す.
PostgreSQL サービスアカウントは Linux が管理するアカウントのこと.PostgreSQL が管理するロールとは別のものである.
- PostgreSQL の認証は peer 認証が設定されていることを確認
sudo cat /etc/postgresql/14/main/pg_hba.conf
- Ubuntu のサービスアカウント postgres と peer 認証により,PostgreSQL の psql を使ってみる.
「\c」により,使用されている PostgreSQL のロール名と,オープンされているデータベース名を確認.
確認したら,「\q」により終了.
sudo -u postgres psql \c \q
パスワード認証 (scram-sha-256) の設定
PostgreSQL での新しいロールの追加とパスワード認証の設定を行ってみる.
下の手順で,PostgreSQL で,新しいロール testuser を作成し,パスワード認証で接続できるように設定する.PostgreSQL 14 では,パスワードの保存形式の既定値 (password_encryption) は scram-sha-256 である.md5 は旧来の方式であり,pg_hba.conf の認証方式にも scram-sha-256 を指定する.
- PostgreSQL で,新しいロール testuser を作成
パスワードは,下のものをそのまま使うのでなく,必ず独自に設定してください.
sudo -u postgres psql create role "testuser" with login password 'hoge7618mhty'; \du \q
- /etc/postgresql/14/main/pg_hba.conf を書き換えて,パスワード認証を有効にする.
「local all postgres peer」の行の下に,次の1行を追加する.
local all all scram-sha-256pg_hba.conf は上の行から順に照合され,最初に一致した行だけが使用される.「local all postgres peer」の行を残しておくことにより,サービスアカウント postgres からの peer 認証での接続は,そのまま利用できる.
- PostgreSQL サーバの再起動
エラーメッセージが出ていなければ OK.
sudo pg_ctlcluster 14 main restart sudo pg_ctlcluster 14 main status
- 新しいロール testuser で,パスワード認証により psql を使用できるか確認する.
パスワード認証のときは psql -U <ロール名> -d <データベース名>
psql -U testuser -d postgres \c \q
PostgreSQL データベースサーバの起動と終了
PostgreSQL データベースサーバの再起動
sudo pg_ctlcluster 14 main restart
sudo pg_ctlcluster 14 main status
PostgreSQL データベースサーバの終了
sudo pg_ctlcluster 14 main stop
sudo pg_ctlcluster 14 main status
psql の基本操作
- psql --version: psql バージョン確認:
- psql: psql 起動
- \copy: テーブルのコピー
- \d, \d+: テーブル等の情報の表示
- \db, \db+: テーブル空間の表示
- \c: データベースへの接続、現在接続しているデータベースとユーザの確認
- \l: データベースの情報の表示
- \q: 終了
テーブル定義とレコード挿入
- 「PostgreSQL データベース管理者のユーザ名」で,psql を用いて接続.
sudo -u postgres psql
- SQL を用いたテーブル定義
create table order_records ( id integer primary key not null, year integer not null CHECK ( year > 2008 ), month integer not null CHECK ( month >= 1 AND month <= 12 ), day integer not null CHECK ( day >= 1 AND day <= 31 ), customer_name text not null, product_name text not null, unit_price real not null check ( unit_price > 0 ), qty integer not null default 1 check ( qty > 0 ), created_at timestamp with time zone not null default current_timestamp, updated_at timestamp with time zone not null default current_timestamp, check ( ( unit_price * qty ) < 200000 ) );
- SQL を用いたレコード挿入
begin transaction; insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1, 2022, 7, 26, 'kaneko', 'orange A', 1.2, 10 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 2, 2022, 7, 26, 'miyamoto', 'Apple M', 2.5, 2 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 3, 2022, 7, 27, 'kaneko', 'orange B', 1.2, 8 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price) values( 4, 2022, 7, 28, 'miyamoto', 'Apple L', 3 ); commit;
- 確認表示
select * from order_records;
- 更新し確認表示
begin transaction; update order_records set unit_price = 11.2 where id = 1; commit; select * from order_records;
- テーブル一覧の表示
\d
- psql の終了
\q
PostGIS の有効化
PostGIS は,パッケージをインストールしただけでは使用できない。使用するデータベースごとに,拡張機能 (extension) の登録が必要である.
- 「PostgreSQL データベース管理者のユーザ名」で,psql を用いて接続.
sudo -u postgres psql - 拡張機能 postgis の登録とバージョン確認
create extension postgis; select postgis_full_version(); - 空間データ型の動作確認
select ST_AsText(ST_MakePoint(132.46, 34.40)); - psql の終了
\q
pgAdmin4 のセットアップと使用
- Web モードのセットアップ
ログインに使用するメールアドレスとパスワードを設定する。同時に Apache の設定が行われる.
sudo /usr/pgadmin4/bin/setup-web.sh - Web ブラウザで http://127.0.0.1/pgadmin4 を開き,設定したメールアドレスとパスワードでログインする.
- 左側のツリーで「Servers」を右クリックし,「Register」→「Server」を選び,接続するサーバを登録する.
「General」タブの Name に任意の名前,「Connection」タブの Host name/address に 127.0.0.1,Port に 5432,Username と Password にロール名とパスワード(例えば,上で作成した testuser)を指定する.