【初心者向け】MacでPostgreSQLを起動・停止する方法まとめ

データベース・SQL

PostgreSQL(ポストグレス)は、高機能で人気のあるオープンソースのデータベースです。

Macでは主に以下の3つの方法でインストール・起動が行われます:

  1. Homebrewを使ってインストール・操作(開発者に人気)
  2. 公式アプリ(Postgres.app)でGUI管理(初心者におすすめ)
  3. コマンドラインで直接制御(上級者向け)

この記事では、それぞれの方法での「起動・停止・再起動」手順を紹介し、トラブル時の対処法まで解説します。

スポンサーリンク

方法1:Homebrew経由でインストールした場合

前提:Homebrewがインストールされている

# Homebrewがない場合は以下でインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# PostgreSQLのインストール
brew install postgresql

基本的な操作コマンド

PostgreSQLの起動

brew services start postgresql

特徴:

  • macOSの起動時に自動起動するようになります
  • バックグラウンドで常駐するサービスとして動作
  • 一度設定すれば、再起動後も自動で起動

実行例:

$ brew services start postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

PostgreSQLの停止

brew services stop postgresql

使う場面:

  • PostgreSQLを完全に停止したいとき
  • メモリを節約したいとき
  • 他のデータベースを使うとき

実行例:

$ brew services stop postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

PostgreSQLの再起動

brew services restart postgresql

使う場面:

  • 設定ファイルを変更した後
  • データベースがおかしくなったとき
  • エラーからの復旧時

サービスの状態確認

# すべてのサービスの状態を確認
brew services list

# PostgreSQLのみの状態確認
brew services list | grep postgresql

表示例:

$ brew services list
Name          Status  User File
postgresql    started user ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
redis         stopped
nginx         stopped

複数バージョンがある場合

インストールされているバージョンの確認

# インストール済みのPostgreSQLを確認
brew list | grep postgresql

# 利用可能なバージョンを確認
brew search postgresql

バージョンを指定して操作

# PostgreSQL 14を起動
brew services start postgresql@14

# PostgreSQL 15を起動
brew services start postgresql@15

# 現在動いているバージョンを確認
brew services list | grep postgresql

注意:

  • 同時に複数バージョンを起動すると、ポート競合が発生することがある
  • 使用するバージョンを決めて、そのバージョンのみを起動することを推奨

自動起動の設定

自動起動を有効にする

# PostgreSQLを起動し、自動起動も設定
brew services start postgresql

# または明示的に自動起動のみ設定
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

自動起動を無効にする

# PostgreSQLを停止し、自動起動も無効化
brew services stop postgresql

# または明示的に自動起動のみ無効化
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

方法2:Postgres.app(GUIアプリ)を使う場合

Postgres.appとは?

特徴:

  • PostgreSQL公式が提供するMac専用のオールインワン環境
  • GUIで簡単に起動・停止できる
  • 複数バージョンの管理が簡単
  • 開発者や学習者に人気

インストール方法

  1. Postgres.app公式サイトにアクセス
  2. 「Download」ボタンからアプリをダウンロード
  3. ダウンロードしたファイルを「アプリケーション」フォルダに移動

基本的な操作方法

起動方法

1. アプリケーションフォルダから「Postgres」をダブルクリック
2. メニューバーに象のアイコンが表示される
3. アイコンが緑色になれば起動完了

確認方法:

  • メニューバーのアイコンをクリック
  • 「数字(ポート番号)」が表示されていれば起動中

停止方法

1. メニューバーの象のアイコンをクリック
2. 「Quit Postgres」を選択
3. アイコンが消えれば停止完了

データベースサーバーの個別操作

1. Postgres.appのメイン画面を開く
2. 各サーバー(バージョン)の右側にある「Start」「Stop」ボタンをクリック
3. 状態が「Running」または「Stopped」で確認

複数バージョンの管理

新しいバージョンの追加

1. メイン画面の「+」ボタンをクリック
2. 「Create New Server」を選択
3. PostgreSQLバージョンを選択
4. ポート番号を設定(デフォルトから変更推奨)
5. 「Create Server」をクリック

バージョン間の切り替え

1. 使用したいバージョンのサーバーを「Start」
2. 不要なバージョンのサーバーを「Stop」
3. 接続先のポート番号を変更(アプリケーション側で設定)

PATH設定(重要)

Postgres.appを使う場合、コマンドラインからPostgreSQLを使うためにPATHを設定する必要があります。

一時的な設定

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

永続的な設定

# ~/.zshrc ファイルに追加(zshを使用の場合)
echo 'export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"' >> ~/.zshrc

# 設定を反映
source ~/.zshrc

# ~/.bash_profile ファイルに追加(bashを使用の場合)
echo 'export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

設定確認

# PostgreSQLのコマンドが使えるか確認
which psql
# 結果例: /Applications/Postgres.app/Contents/Versions/14/bin/psql

# バージョン確認
psql --version
# 結果例: psql (PostgreSQL) 14.9

方法3:コマンドラインで直接制御する(上級者向け)

基本的なコマンド

PostgreSQLの起動

pg_ctl -D /usr/local/var/postgres start

PostgreSQLの停止

pg_ctl -D /usr/local/var/postgres stop

PostgreSQLの再起動

pg_ctl -D /usr/local/var/postgres restart

ステータス確認

pg_ctl -D /usr/local/var/postgres status

パラメータの説明

-D オプション(データディレクトリ)

# Homebrewでインストールした場合の典型的なパス
-D /usr/local/var/postgres

# Apple Silicon Mac(M1/M2)の場合
-D /opt/homebrew/var/postgres

# Postgres.appの場合
-D ~/Library/Application\ Support/Postgres/var-14

その他の有用なオプション

# ログファイルを指定して起動
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/log/postgres.log start

# 強制停止
pg_ctl -D /usr/local/var/postgres stop -m immediate

# 穏やかな停止(接続中のセッションを待つ)
pg_ctl -D /usr/local/var/postgres stop -m smart

設定ファイルの場所

主要な設定ファイル

# postgresql.conf(メイン設定)
/usr/local/var/postgres/postgresql.conf

# pg_hba.conf(認証設定)
/usr/local/var/postgres/pg_hba.conf

# pg_ident.conf(ユーザーマッピング)
/usr/local/var/postgres/pg_ident.conf

設定ファイルの編集例

# 設定ファイルを編集
nano /usr/local/var/postgres/postgresql.conf

# 編集後は再起動が必要
pg_ctl -D /usr/local/var/postgres restart

接続テストと基本操作

接続確認

基本的な接続

# デフォルトデータベースに接続
psql

# 特定のデータベースに接続
psql -d データベース名

# 特定のポートに接続
psql -p 5432

# ユーザーを指定して接続
psql -U ユーザー名

接続情報の確認

-- PostgreSQL内で実行
SELECT version();  -- バージョン確認
\l                 -- データベース一覧
\du                -- ユーザー一覧
\q                 -- 終了

基本的なデータベース操作

データベースの作成・削除

# データベース作成
createdb myapp_development

# データベース削除
dropdb myapp_development

ユーザー作成

# 新しいユーザーを作成
createuser --interactive myuser

# スーパーユーザーを作成
createuser --superuser myuser

よくあるエラーと対処法

エラー1:データベースが起動しない

症状

$ brew services start postgresql
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/username/Library/LaunchAgents/homebrew.mxcl.postgresql.plist` exited with 5.

原因と対処法

原因1:ポートが競合している

# ポート5432を使っているプロセスを確認
lsof -i :5432

# プロセスを強制終了
kill -9 プロセスID

原因2:データクラスタが壊れている

# データディレクトリを確認
ls -la /usr/local/var/postgres/

# 壊れている場合は再初期化
rm -rf /usr/local/var/postgres
initdb /usr/local/var/postgres

原因3:権限の問題

# データディレクトリの権限を修正
sudo chown -R $(whoami) /usr/local/var/postgres
chmod 700 /usr/local/var/postgres

エラー2:command not found: psql

症状

$ psql
zsh: command not found: psql

対処法

PATHが通っていない場合:

# Homebrewの場合
export PATH="/opt/homebrew/bin:$PATH"

# Postgres.appの場合
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

# 永続化(~/.zshrcに追記)
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

エラー3:接続できない

症状

$ psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory

対処法

PostgreSQLが起動していない場合:

# サービスの状態確認
brew services list | grep postgresql

# 起動していない場合は起動
brew services start postgresql

ソケットファイルの問題:

# ソケットファイルの場所を確認
sudo find /tmp -name ".s.PGSQL.*" 2>/dev/null

# 不要なソケットファイルを削除
sudo rm /tmp/.s.PGSQL.*

エラー4:複数のPostgreSQLが競合

症状

# 複数のPostgreSQLが動いている
$ ps aux | grep postgres
user  1234  postgres: main process
user  5678  postgres: main process

対処法

# Homebrewのサービスを停止
brew services stop postgresql

# Postgres.appも停止
# (メニューバーから「Quit Postgres」)

# 手動で起動したプロセスを確認・停止
ps aux | grep postgres
kill プロセスID

エラー5:ログファイルでエラー確認

ログファイルの場所

# Homebrewの場合
tail -f /usr/local/var/log/postgres.log

# Apple Silicon Macの場合
tail -f /opt/homebrew/var/log/postgres.log

# Postgres.appの場合
tail -f ~/Library/Application\ Support/Postgres/var-*/postgresql.log

典型的なエラーメッセージ

FATAL: lock file "postmaster.pid" already exists
→ 既に起動中、または前回の終了が不正

FATAL: could not create shared memory segment
→ メモリ不足、または設定値が大きすぎる

FATAL: database "username" does not exist
→ デフォルトデータベースが存在しない

パフォーマンス設定

基本的な設定調整

postgresql.confの主要設定

# 設定ファイルを編集
nano /usr/local/var/postgres/postgresql.conf

よく調整する設定項目:

# メモリ関連
shared_buffers = 256MB          # 共有バッファサイズ
effective_cache_size = 1GB      # OSのファイルキャッシュサイズ
work_mem = 4MB                  # ソート/ハッシュ用メモリ

# 接続関連
max_connections = 100           # 最大接続数
port = 5432                     # ポート番号

# ログ関連
log_statement = 'all'           # 全SQLをログに記録
log_min_duration_statement = 1000  # 1秒以上のクエリをログ

設定の反映

# 設定変更後は再起動
brew services restart postgresql

# または
pg_ctl -D /usr/local/var/postgres restart

まとめ:使い方別おすすめ操作方法

方法対象者メリットデメリットおすすめ起動方法
Homebrew + services開発者自動起動可能、コマンドライン統合初期設定が必要brew services start postgresql
Postgres.app初心者・GUI派視覚的で簡単、複数バージョン管理GUI必須、カスタマイズ制限アプリを開くだけ
pg_ctl上級者細かく制御可能、設定柔軟手動操作必要、設定複雑pg_ctl -D ディレクトリ start

選び方の指針

初心者におすすめ

Postgres.app – GUIで簡単、学習に集中できる

開発者におすすめ

Homebrew + services – 他のツールとの連携がスムーズ

システム管理者におすすめ

pg_ctl – 詳細な制御が可能

コメント

タイトルとURLをコピーしました