CodeGym /コース /SQL SELF /PostgreSQLのインストールと設定でよくあるミス

PostgreSQLのインストールと設定でよくあるミス

SQL SELF
レベル 4 , レッスン 1
使用可能

1. PostgreSQLの基本コンポーネント

インストーラーで主に3つのものが入るはず:サーバーと2つのクライアント。今からそれぞれについてちょっと説明するね。

サーバー postgres

これがPostgreSQLの心臓部。サーバーはこんなことを担当してる:

  • クライアントからのリクエスト処理。
  • データの管理:読み込み、書き込み、更新。
  • データのセキュリティと整合性の確保。

PostgreSQLサーバーを起動すると、クライアントからのリクエストを受け付ける準備ができるよ。

クライアント

クライアントは、サーバーに接続してSQLクエリを送るプログラムのこと。PostgreSQLにはいくつか有名なクライアントがある:

  • プログラム psql:PostgreSQL用のコマンドラインツール。ターミナル好きや"オールドスクール"な開発者向け。
  • プログラム pgAdmin:サーバー管理用のグラフィカルインターフェース。データベース作業のスイスアーミーナイフみたいなもので、見た目も使い勝手も良い。
  • その他のクライアント:実は他のプログラミング言語からPostgreSQLを使うためのライブラリやツールが山ほどある。例えばPython用のpsycopg3やRuby用のpgとか。

これらのコンポーネントはどうやって一緒に動くの?ユーザーがクライアント(psql/pgAdmin)でリクエストを送る → クライアントがサーバーpostgresにリクエストを投げる → サーバーがファイルシステムやメモリからデータを使ってリクエストを処理 → 結果がクライアントに返る、って流れだよ。

2. コンソールからデータベースに接続しよう

覚えてると思うけど、psqlはコマンドラインからPostgreSQLを操作するためのプログラム。サクッと何か確認したい時やクエリを実行したい時、データベースを勉強したい時にピッタリ。

例:psqlの使い方


# サーバーに接続する
psql -U postgres

うまくいけば、こんな画面が出てくるはず:


psql (17.5)
Type "help" for help.

postgres=#

おめでとう、psqlのコマンドラインに入れたよ!

接続できたら、こんなコマンドが使える:


-- データベースを作成
CREATE DATABASE test_db;

-- データベース一覧を見る
\l

-- 特定のデータベースに切り替え
\c test_db

-- セッション終了
\q

これは「直接触りたい派」にとって最高のツールだよ。

3. インストール時によくあるトラブル

もし何かうまくいかなかったら?データベース一覧が見れない、ログインすらできない?インストーラーは終わったのにそれっきり 😡 エラーやコンソールの怒りメッセージ、postgresが起動しない、psqlが「誰?」みたいな顔をする。あるあるだよね?おめでとう — それは「全部正しくやったのに何も動かない」クラシックな段階だよ。😅

じゃあ、みんなが一度は踏む地雷を一緒に見ていこう。冷静な頭と温かいお茶、そしてどんなエラーも倒すぞって気持ちで!今日はPostgreSQLの「メンターだけ動く病」を直しちゃおう。🛠️🐘

トラブル1. ポートの競合

たぶん一番よくあるパターン。PostgreSQLはデフォルトで5432ポートを使う。他のアプリがこのポートを使ってると、インストールはできてもサーバーが起動しない。

どうやって気づく?

PostgreSQLを起動しようとすると動かないか、こんなメッセージが出る:


could not bind IPv4 socket: Address already in use

解決方法:

どのアプリが5432ポートを使ってるか確認しよう。Linuxならこのコマンド:


sudo netstat -tuln | grep 5432

Windowsならコンソールで:


netstat -ano | find "5432"

もし本当にポートが使われてたら、PostgreSQLのポートを変えよう。postgresql.confファイル(PostgreSQLのデータフォルダにある)を開いて、


#port = 5432

ポート番号を空いてる番号に変える。例えば:


port = 5433

変更したらサーバーを再起動するのを忘れずに!

トラブル2. 権限不足

Windowsだと、PostgreSQLのインストーラーが正しく終わらないことがある。今のユーザーに十分な権限がない場合だね。

どうやって気づく?

インストーラーが固まるか、「権限がありません」みたいなメッセージが出る。

解決方法:

インストーラーを管理者権限で実行しよう。右クリックして「管理者として実行」を選ぶだけ。

トラブル3. 環境変数の問題

たまに、PostgreSQLをインストールした後、psqlコマンドが認識されないことがある。

どうやって気づく?

psqlを実行しようとすると、こんなメッセージが出る:


'psql' is not recognized as an internal or external command

解決方法:

これはPostgreSQLのバイナリが入ってるフォルダ(例:C:\Program Files\PostgreSQL\17\bin)が環境変数に入ってないせい。

Windowsで直すには:

  1. 「システムのプロパティ」→「詳細設定」→「環境変数」を開く。
  2. 「システム環境変数」の中のPathを探して編集。
  3. PostgreSQLのbinフォルダのパスを追加。例:
    
    C:\Program Files\PostgreSQL\17\bin
            
  4. コマンドプロンプトを再起動しよう。

4. サーバー接続時のエラー

たまに全部うまくいく時もある。PostgreSQLを起動してpsqlを開くと、何の問題もなくデータベースに繋がる。でも、そうじゃない時もある。バン!エラー発生。何かが邪魔してる。パスワードは合ってるはず、サーバーも動いてるっぽい…でもpsqlが怒ってる。

焦らないで — こういうエラーはみんな経験する。下に、よくある接続エラーとそのサクッとした解決法をまとめたよ。

トラブル1. postgresユーザーのパスワード間違い

PostgreSQLをインストールする時、DBのスーパーユーザーpostgresのパスワードを決めるよね。もし忘れたり間違えたりしたら、サーバーに接続できない。

どうやって気づく?

接続コマンドを打つと:


psql -U postgres

こんなエラーが出る:


password authentication failed for user "postgres"

解決方法:

postgresのパスワードを忘れたら、こうやってリセットできる:

  1. pg_hba.confファイルを開く(PostgreSQLのデータフォルダ、例:C:\Program Files\PostgreSQL\17\data
  2. こんな行を:
    
    host    all             all             127.0.0.1/32            md5
            
    こう書き換える:
    
    host    all             all             127.0.0.1/32            trust
            

    これで一時的にパスワードチェックがオフになる。

  3. PostgreSQLサーバーを再起動。
  4. パスワードなしでDBに接続:
    
    psql -U postgres
            
  5. パスワードを変更:
    
    ALTER ROLE postgres PASSWORD 'new_password';
            
  6. pg_hba.confを元に戻してサーバーを再起動。

トラブル2. ホストやポートの指定ミス

psqlクライアントがサーバーに繋がらない時は、ホストやポートの設定が正しいか確認しよう。

どうやって気づく?

接続エラーはこんな感じ:


could not connect to server: Connection refused
    Is the server running on host "127.0.0.1" and accepting
    TCP/IP connections on port 5432?

解決方法:

PostgreSQLサーバーが動いてるか確認:


systemctl status postgresql

(Linuxの場合)またはWindowsなら「サービス」(Ctrl+Shift+Esc)を開こう。

サーバーが動いてたら、pg_hba.confの設定もチェック。ローカルホスト(127.0.0.1)や自分のIPアドレスの接続設定が正しいか確認。例えば:


host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.100/32        md5

5. トラブルシューティングのコツまとめ

  • PostgreSQLのログを活用しよう
    ログは最強の味方。PostgreSQLのデータフォルダ(例:/var/log/postgresql/、Linuxの場合)にある。何かあったらまずログを見てみて。
  • ドキュメントをチェック
    PostgreSQLの公式ドキュメントは超充実してる。エラーにぶつかったら、まずは公式ドキュメントを探してみよう:https://www.postgresql.org/docs/
  • コミュニティを使おう
    困ったらStack OverflowやChatGPT、PostgreSQLのフォーラムを覗いてみて。答えが見つかる確率高いよ。

P.S.

大事! どうしても動かない時はサポートに連絡してね:一緒に解決して、その内容もこの記事に追加するよ!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION