PostgreSQLをインストールする
Linuxのパッケージ、Windows・macOS向けインストーラー、Dockerなど複数の方法があります。学習中は一つの方法に絞り、複数のサーバーが同じ5432番ポートを使わないようにします。
準備するもの
- PostgreSQLサーバーとクライアント(psql)
- 練習用の管理ユーザーまたはロール
- 削除しても困らない練習用データベース
公式のインストール方法はPostgreSQL公式ダウンロード案内で、OSに合う手順を選んでください。
psqlで接続する
-hはホスト、-pはポート、-Uはロール、-dはデータベースです。
接続コマンドCOMMAND
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres接続後の表示例OUTPUT
Password for user postgres:
psql (17.x)
postgres=#\qで終了します。SQL文はセミコロンで終わり、psqlのメタコマンドは\から始まります。
ロールとデータベースを作る
PostgreSQLでは、ログインできるロールとデータベースを分けて管理します。アプリケーションへ管理者ロールを渡さず、用途ごとのロールを作ります。
練習用ロールとDBSQL
CREATE ROLE study_user LOGIN PASSWORD 'change-this-password';
CREATE DATABASE study_postgres OWNER study_user;
\c study_postgres study_user確認結果の例OUTPUT
You are now connected to database "study_postgres" as user "study_user".
study_postgres=>パスワードをそのまま使わない この例は学習用です。実際の環境では強い秘密情報を安全に管理し、SQLファイルやリポジトリへ残しません。
スキーマを確認する
スキーマはデータベース内の名前空間です。初期状態ではpublicスキーマがよく使われます。テーブル名が同じでもスキーマが違えば別のオブジェクトとして管理できます。
psqlで確認するPSQL
\dn
\dt
SELECT current_schema();実行結果の例OUTPUT
Name | Owner
---------+------------
public | study_user
current_schema
----------------
public接続できないとき
- PostgreSQLサービスが起動しているか確認する
- 5432以外のポートを使っていないか確認する
- ホスト、ロール、DB名を分けて確認する
- pg_hba.confやファイアウォールを管理者に確認する
接続拒否の例OUTPUT
psql: error: connection to server at "127.0.0.1", port 5432 failed:
Connection refused