PostgreSQLをMacにインストール!起動と終了してみる。

Homebrewを利用してMacにPostgreSQLをインストールします。Homebrewはすでに使える状態からスタートします。(わからない場合は「mac homebrew あるか確認で」検索してみてください)

brew でPostgreSQLインストール

PostgreSQLがインストールできるか確認

brewでPostgreSQLがインストールできるか確認します。

$ brew search postgresql

以下返答。

==> Formulae
postgresql postgresql@11 postgresql@9.5
postgresql@10 postgresql@9.4 postgresql@9.6
==> Casks
navicat-for-postgresql

どのバージョンのPostgreSQLがインストールできるか表示されます。

PostgreSQLをインストール

バージョンを指定しない場合

$ brew install postgresql

バージョンを指定する場合

$ brew update && brew install postgresql@9.5

Mac OSが古いmacOS 10.11.)場合はバージョンを指定しないとWarningがでてインストールされないです。

もろもろ設定する

インストール中に出てきた文言通りに実施します。

If you need to have postgresql@9.5 first in your PATH run:
echo 'export PATH="/usr/local/opt/postgresql@9.5/bin:$PATH"' >> /Users/nakamoto/.bash_profile

と書かれているので言われた通りにPATHを設定します。

$echo 'export PATH="/usr/local/opt/postgresql@9.5/bin:$PATH"' >> /Users/nakamoto/.bash_profile
$source .bash_profile

その他You may need toがらみは必要に応じて実施。わからないので放置。

To have launchd start postgresql@9.5 now and restart at login:
brew services start postgresql@9.5
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgresql@9.5 start

とあるので「pg_ctl -D /usr/local/var/postgresql@9.5 start」で起動できますが、その前に文字コードをUTF-8でDBを初期化します。

$ initdb /usr/local/var/postgres -E utf8

Success. You can now start the database server using:
    pg_ctl -D /usr/local/var/postgres -l logfile start

起動するコードが「pg_ctl -D /usr/local/var/postgres -l logfile start」変わったのでこちらで起動可能。

PostgreSQLを起動

上記で設定した方法で起動。

$ pg_ctl -D /usr/local/var/postgres -l logfile start

pg_ctl で PostgreSQLサーバを初期化、起動、停止、制御することができます。

参考サイト:pg_ctl:PostgreSQL 9.4.5文書

またはbrewコマンドでバージョンを指定して起動。どちらを使うかは好みの問題。

$ brew services start postgresql@9.5

PostgreSQLのバージョンは以下のコマンドで確認できます。

$ postgres --version

データベース一覧を表示

データベースがあるか確認します。

psql -l

作成されていたら完了です。

PostgreSQLを停止

起動したままなのも気持ち悪いのでサーバーの停止方法。上記のstartの箇所をstopに変更するだけです。

$ pg_ctl -D /usr/local/var/postgres -l logfile stop

brewの場合

$ brew services stop postgresql@9.5

PostgreSQL, SQL

Posted by Nakamoto