homebrew
PostgreSQL
macOSHighSierra

[macOS High Sierra][Homebrew] PostgreSQL のインストールからDB作成まで

環境

  • macOS High Sierra ( 10.13.x )
  • Ruby v2.3.4p301
  • Homebrew v1.5.4
  • PostgreSQL v10.2

参考

Homebrewのインストール

コマンドラインから次のコマンドを実行してインストール。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

PostgreSQLのインストール

Homebrew で PostgreSQL をインストール。

$ brew install postgresql

PostgreSQLのサービス自動起動と停止

自動起動

次に示すコマンドで PostgreSQL の自動起動を設定する。
これによって PostgreSQL が起動し、macOS の再起動〜ログインした際にも PostgreSQL が自動で起動する設定となる。

$ brew services start postgresql

停止

PostgreSQL の停止、並びに自動起動をやめたい場合は次のコマンドを実行する。

$ brew services stop postgresql

ユーザ作成

$ psql -U${USER} postgres

で PostgreSQL にログイン。
ここで、環境変数 ${USER} は PostgreSQL をインストールした際の macOS のログインユーザである。${USER} は PostgreSQL に対してスーパーユーザとして作成されていて、このユーザをそのまま使うのは良くないので、

postgres=# create user postgres with SUPERUSER;
CREATE ROLE

で OS のユーザとは別に操作用のユーザ postgres を作成する。

この時 with SUPERUSER を指定して、作成するユーザにスーパーユーザー権限を与えている点に注目。
ここで with SUPERUSER 付きで作成しないとDB作成権限等の特別な権限が付与されない。

DB接続

先ほど作成したユーザでログインできるかを確認する。

$ psql -Upostgres

次の表示が出たらログイン成功。

psql (10.2)
Type "help" for help.

postgres=# 

さらに

postgres=# \l
                                    List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |     Access privileges     
-----------+----------+----------+-------------+-------------+---------------------------
 postgres  | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"${USER}"            +
           |          |          |             |             | "${USER}"=CTc/"${USER}"
 template1 | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"${USER}"            +
           |          |          |             |             | "${USER}"=CTc/"${USER}"
(3 rows)

psql メタコマンドである ¥l を入力してでデータベースのリストが取得できることを確認。

DB作成

コマンドラインから作成する方法と PostgreSQL にログインして作成する方法を示す。

コマンドラインから作成する方法

コマンドラインからオーナーに postgres を指定してデータベース hogehoge を作成。

$ createdb hogehoge -O postgres;
  • -O [オーナー] or (--owner)
    • 作成するデータベースの所有者となるユーザを指定

PostgreSQL にログインして作成する方法

PostgreSQL にログインしてオーナーに postgres を指定してデータベース hogehoge2 を作成。

$ psql -Upostgres
psql (10.2)
Type "help" for help.

postgres=# create database hogehoge2 owner=postgres;
CREATE DATABASE

データベースの一覧を確認

前掲の psql メタコマンド ¥l でデータベースの一覧を確認すると

postgres=# \l
                                    List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |     Access privileges     
-----------+----------+----------+-------------+-------------+---------------------------
 hogehoge  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 hogehoge2 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"${USER}"            +
           |          |          |             |             | "${USER}"=CTc/"${USER}"
 template1 | ${USER}  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"${USER}"            +
           |          |          |             |             | "${USER}"=CTc/"${USER}"
(4 rows)

先程作成したデータベース hogehogehogehoge2 がオーナー postgres で作成されていることが確認できる。

まとめにかえて

PostgreSQL を macOS ( High Sierra ( 10.13.x ) ) にインストールしてユーザ作成 〜 DB 作成まで確認できた。
これで PostgreSQL の実行環境が取り敢えずは整ったので、あとはマニュアルに沿ってテーブル作成するなりしてアプリ作成に利用する。