Windows と macOS に EnterpriseDB 版の PostgreSQL をインストールする
Heroku Postgres をいじり始めたが、ローカル開発環境にも PostgreSQL 環境が欲しいので、Windows と Mac それぞれで PostgreSQL をインストールしてみる。
Windows なら Chocolatey、Mac なら Homebrew からも PostgreSQL がインストールできるが、ウィザード形式で簡単にインストールができるので、PostgreSQL の公式サイトで紹介されている EnterpriseDB 版を使用してみる。
(調べた感じ、Homebrew で落とせる PostgreSQL のバージョンが少し古そうだったのと、インストール後の設定が面倒臭そうだったので、Windows 版で試したことがあった、このインストーラ版を利用することにした)
目次
インストーラをダウンロードする
まずは公式サイトからインストーラをダウンロードする。
- PostgreSQL: Downloads … ダウンロードページトップ
それぞれの OS のページから「Download the installer」リンクを押し、PostgreSQL v11 のインストーラをダウンロードする。
- Windows の場合は
postgresql-11.1-1-windows-x64.exe
- Mac の場合は
postgresql-11.1-1-osx.dmg
というファイル名だった (v11.1.1 が本稿執筆時点の最新版)。
ウィザードに従ってインストールする
ダウンロードしたファイルを開いてインストーラを起動する。質問される内容は以下のとおり。
- インストール先 : デフォルトのままで OK
- インストール内容 : デフォルトのままで OK
- データディレクトリ : デフォルトのままで OK
- パスワード : 初期ユーザとして
postgres
ユーザが作られるので、このユーザのパスワードを決める。ユーザ名と同じpostgres
でもなんでも適当に決める - ポート : デフォルトの
5432
のままで OK - ロケール : Windows においてエンコーディングの問題などが起こるようなので、「C」を選択するのが良いらしい。Mac でも「C」を選択した。
ウィザードの内容は Windows・Mac ともに同じ。
環境変数を設定する
Windows の場合は「システム詳細設定」の「環境変数」にて、Mac の場合は ~/.bash_profile1
にて、それぞれ PostgreSQL の環境変数を PATH
に追加する。
- Windows :
C:\Program Files\PostgreSQL\11\bin;【PATH】
- Mac :
export PATH=/Library/PostgreSQL/11/bin:$PATH
このようにすると、ターミナルから PostgreSQL に接続するための psql
コマンドが使えるようになった。
# デフォルトの postgres ユーザでログインする
$ psql -U postgres
# パスワードを尋ねられるので入力する
Mac のみ : SQL Shell (psql).app
を使ってみる
インストールが完了すると、Applications/
配下に PostgreSQL 11/
ディレクトリができている。SQL Shell (psql).app
を開くと psql
コマンドと同等の処理ができる。
$ /Library/PostgreSQL/11/scripts/runpsql.sh; exit
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]: # ココまでは未入力のまま Enter で進める
Password for user postgres: 【パスワードを入れる】
psql (11.0)
Type "help" for help.
# DB 接続できた。試しにデータベース一覧を見てみる
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+-----------+---------+-------+-----------------------
postgres | postgres | SQL_ASCII | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
- 参考 : PostgreSQL/データベース一覧を調べる方法 - 調べる.DB …
\l
で DB 一覧が表示できる
ココで初めて気付いたのだが、Windows ではデフォルトのデータベースのエンコーディングが「UTF8
」になっていたのに、Mac では「SQL_ASCII
」になっていた。以下のような update
構文でエンコーディングを修正できる。
postgres=# update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'postgres';
postgres=# update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'template0';
postgres=# update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'template1';
# 再確認。Encoding が UTF8 になった
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
# 試しに DB を作る
postgres=# CREATE DATABASE my_local_db;
# ちゃんと UTF8 になった
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+---------+-------+-----------------------
my_local_db | postgres | UTF8 | C | C |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
以上
コレでローカルの PostgreSQL の環境準備は OK だ。今度はこの PostgreSQL 環境に Node.js スクリプトから接続してみようと思う。