はじめに
Raspberry Pi Zero2 W に PostgreSQL をインストールし、データベースとスキーマ、テーブルを作成するところまでを備忘として残したものです。
使用したのは32bit版のRaspberry Pi OS で、通常通りMicroSD(32GB)に書き込んで使用しています。扱うデータ量もそう多くない想定なので、外付けSSDは使用していません。
目次
手順としては、下記を順に実行して完成です。
1. PostgreSQL のインストール
まず、最新のパッケージリストを更新し、PostgreSQL をインストールします。
sudo apt update
sudo apt-get install postgresql
インストールが完了したら、postgresユーザーが作成され、psqlコマンドが使用できるようになります。まずはLinuxユーザーのほうのパスワードを設定しておきます。
sudo passwd postgres
2. PostgreSQL ユーザーの作成
Linux上で既に使用しているユーザー(名)をPostgreSQLでもそのまま使用したい場合でも、同じユーザ名で作成しておく必要があります。
パスワードも同時に設定しておく。
-P オプションを指定することで、コマンド実行時にパスワードの入力が求められます。
su - postgres
createuser -P ユーザー名
※PostgreSQLでは、基本的にすべて小文字で設定してしまうのが良いです。大文字を使用する場合、毎回ダブルコーテーションで括る必要があるため面倒です。
3. データベースの作成
postgresユーザーのまま実行します。
createdb データベース名
作成したデータベースに接続します。
psql データベース名
無事に接続できれば、コンソール上でSQLを実行することができます。
-- 登録済みのユーザ
SELECT rolname from pg_roles;
-- postgresユーザの(DB)パスワード設定
ALTER USER postgres WITH PASSWORD '新しいパスワード';
4. 認証設定
このままだと、PostgreSQL上でのユーザーとLinux上でのユーザー名が一致していないとデータベースに接続することができないうえ、pgAdminをインストールしたクライアントからの接続を受けることができないため、設定ファイルを編集します。
postgresユーザー、または管理者権限で編集を行います。
/etc/postgresql/15/main/pg_hba.conf
「"local" is for Unix domain socket connections only」のMETHODをmd5に変更する。
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
同じファイルに対して、ADDRESS 「192.168.0.0/24」の行を追加します。(md5で)
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 192.168.0.0/24 md5
この設定により、すべてのローカルネットワークからの接続を受け付けるようになります。
セキュリティ上問題がある場合は具体的にIPアドレスを絞るなど、検討が必要になるが自宅でなんとなく使えればいいかなくらいの感覚なら、このまま設定するのがよいかと。
/etc/postgresql/15/main/postgresql.conf
アクセス自体の許可を設定します。
「listen_addresses」の値を変更します。
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
すべての変更を保存したら再起動します。
sudo service postgresql restart
5. pgAdminの設定
pgAdminをインストールしましょう。(手順は割愛)
インストール後、pgAdminにてサーバーの追加を行います。
[オブジェクトエクスプローラ] にて、サーバアイコンを右クリックし、[サーバーの登録] をクリックする。
・ホスト名/アドレス:ラズパイのIPアドレス
・管理用データベース:上手順で作成した"データベース名"
・パスワード:設定する
・パスワードを保存:チェックする(面倒なので)
接続できてしまえば、スキーマの追加やテーブルの追加は、GUIで直感的に(...)できます。
接続するユーザーとデータベースの組み合わせには気を付けましょう。(忘れてCREATEしようとして権限がない、と怒られがち)
インストールの手順は、下記サイト様が非常に参考になりました。
https://raspi.taneyats.com/entry/install-postgresql
以上です。