Ari-Press

エンジニアAriのブログ.

PostgreSQLのセットアップ

PostgreSQL

今回はOSXのDB環境を整えよう!ということで、PostgreSQLをインストールしていこうと思います。まあ恐らく標準的なインストール方法のメモということになるかと。

環境はMacOSX Mountain Lion(10.8.2)、Homebrewを使ってインストールする感じで進めていきます。

PostgreSQLのインストール

まずはbrew search postgresqlを実行し、postgresqlがbrewで取得できることを確認します。

普通に発見したので、今度はbrew install postgresqlを実行。さすがにちょっと時間がかかりましたね。正常終了しました。

試しにwhich pg_ctlを実行してみると、/usr/local/bin/pg_ctlが出てきました。ディレクトリからしてちゃんとHomebrewでインストールしたものが呼ばれてそうです。

データベースの初期化

PostgreSQLは起動する時にデータベースが格納されるディレクトリを設定する必要があり、そのためのディレクトリやら設定やらを予め作っておく必要があります。

これをやってくれるコマンドはinitdbなので、とりあえず開発用DBを~/db/postgresqlに作ろう、ということでinitdb -D ~/db/postgresqlを実行します。

これが終了すると、~/db/postgresqlディレクトリ内に色々とファイルができます。PostgreSQLの動作に関連する設定ファイル類もこの中に含まれているので、設定を変更する必要があればこのあたりを弄ることになるみたいです。

とりあえず、postgresql.conf

  • ポートの設定
  • unixsocketdirectoryの変更(どうやらHomebrewで入れたPostgreSQLは変わったところにソケットファイルを作ってしまうらしいので'/tmp'にしました)

を行いました。

PostgreSQLの起動とパスワード認証

ここまでできたらPostgreSQLを起動させてみます。

1
2
3
$ pg_ctl -D ~/db/postgresql start
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

動いた!これで設定したポートから接続できるはずです。

1
2
3
4
5
$ psql -d postgres
psql (9.2.2)
Type "help" for help.

postgres=#

しっかりログインもできるようです。

しかしパスワードなしもどうよ?ということで、パスワードも設定しておきました。

1
2
3
postgres=# \password
Enter new password:
Enter it again:

加えて、~/db/postgresql/pg_hba.confの設定を書き換えます。

1
2
3
4
5
6
7
8
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

こんな感じの箇所を変更し、各アクセス元からの認証方法をtrustからmd5に変更します。

1
2
3
4
5
6
7
8
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

これでもう一度ログインをしようとすると、、

1
2
$ psql -d postgres
Password:

こんな感じでパスワードを聞いてくるようになります。

とりあえずの初期設定はこんなところですかね!

Comments