読者です 読者をやめる 読者になる 読者になる

PostgresのYosemiteにおける初期設定ではまる

mac Postgres

こんにちは。beaglesoftの真鍋です。

MacBookProにインストールされたYosemiteにHomeBrewを利用してPostgresをインストールしたときに少しはまりました。ElCapitanはもっとはまりそうなのでまだ更新していないのですが、、、MountainLionが懐かしい…。

具体的な内容はこちらの記事を参考にしました。ありがとうございます。 pg_ctl start

brewでインストールするとインストールディレクトリがroot所有となる

brewでインストールするとインストールディレクトリがroot所有となりいろいろと困るため、以下の通り設定を変更する必要があります。行っていることは以下の内容となります。

  1. ログインユーザーがフルアクセス可能なディレクトリを作成する。
  2. 作成したディレクトリにPostgresの初期化処理を行いデータベースを作成する。
  3. HomeBrewがインストールしたディレクトリを削除して、2で作成したディレクトリを移動する。

具体的な内容は以下の通りとなります。

$ ll
total 0
drwxr-xr-x  3 ymanabe  admin   102B  9 27 20:57 db
drwxr-xr-x  3 ymanabe  admin   102B  9 27 20:55 log
drwxr--r--  2 root     admin    68B  9 29 07:38 postgres

# 1
$ mkdir postgres9.4

# 1 所有権を変更する
$ chmod 700 postgres9.4

# 2 データベースを作成したディレクトリで初期化する
$ initdb /usr/local/var/postgres9.4 -E utf8
The files belonging to this database system will be owned by user "ymanabe".
This user must also own the server process.

...
Success. You can now start the database server using:

    postgres -D /usr/local/var/postgres9.4
or
    pg_ctl -D /usr/local/var/postgres9.4 -l logfile start

# 3 インストール済のディレクトリを削除する
$ rm -rf postgres
$ ll
total 0
drwxr-xr-x   3 ymanabe  admin   102B  9 27 20:57 db
drwxr-xr-x   3 ymanabe  admin   102B  9 27 20:55 log
drwx------  23 ymanabe  admin   782B  9 29 07:42 postgres9.4

# 3 HomeBrewで作成されたディレクトリに移動する
$ mv postgres9.4 postgres
$ ll
total 0
drwxr-xr-x   3 ymanabe  admin   102B  9 27 20:57 db
drwxr-xr-x   3 ymanabe  admin   102B  9 27 20:55 log
drwx------  26 ymanabe  admin   884B  9 29 07:43 postgres

接続確認を行う

このあと、psqlで接続ができることを確認します。

$ psql postgres
psql (9.4.4)
Type "help" for help.

postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 beagle    | Superuser                                      | {}
 ymanabe   | Superuser, Create role, Create DB, Replication | {}

postgres=#

これで正常に動作するようになります。