INFRA

Windows11にScoopでPostgreSQLを入れる

Windows11にScoopでPostgreSQLを入れます。

Laravel HerdのPRO版を購入して、HerdでPostgreSQLを入れていたのですが、どうもやや不便でした。どこにいるかよく分からないし、psqlが使えないし。もちろんちょっと探したのですが、なんかいないんですよね。。Herdで入れるメリットはそこまでない気もしますので、シンプルにするために、Scoopで入れなおそうと思います。

とりあえず、Laravel HerdのPostgreSQLを止めます。

Scoopでインストール

Terminal window
> scoop install postgresql

サーバの起動

Terminal window
> pg_ctl start -D "C:\Users\dev\scoop\apps\postgresql\current\data"
サーバーの起動完了を待っています....2024-07-26 17:56:43.562 JST [39028] LOG: starting PostgreSQL 16.3, compiled by Visual C++ build 1938, 64-bit
2024-07-26 17:56:43.566 JST [39028] LOG: listening on IPv6 address "::1", port 5432
2024-07-26 17:56:43.567 JST [39028] LOG: listening on IPv4 address "127.0.0.1", port 5432
2024-07-26 17:56:43.633 JST [38124] LOG: database system was shut down at 2024-07-26 15:22:09 JST
2024-07-26 17:56:43.653 JST [39028] LOG: database system is ready to accept connections
完了
サーバー起動完了

Windowsサービスとして登録(自動起動の設定)

管理者権限でPowerShellを開きます。

以下のコマンドを実行してサービスを登録します。

pg_ctl register -N "PostgreSQL" -D "C:\Users\dev\scoop\apps\postgresql\current\data"

サービスの起動タイプを自動に設定します。

sc.exe config "PostgreSQL" start= auto

これで、Windows起動時にPostgreSQLも起動されます。 また、下記で起動したり、停止したりできます。

net start PostgreSQL
net stop PostgreSQL

postgresユーザーのパスワード設定

PostgreSQLのpsqlコマンドラインツールを起動します。

psql -U postgres

以下のSQLコマンドを実行してパスワードを設定します。

ALTER USER postgres PASSWORD 'password';

pg_hba.conf の更新

テキストエディタで C:\Users\dev\scoop\apps\postgresql\current\data\pg_hba.conf を開きます。

trust 認証方式を md5 に変更します。例:

# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

ファイルを保存して閉じます。

PostgreSQLサービスの再起動

変更を反映させるため、サービスを再起動します。

Terminal window
net stop PostgreSQL
net start PostgreSQL