はじめに
これまでMySQLしか触ったことがありませんでしたが、PostgreSQLを勉強する必要が出てきたため、その環境準備からです。
OS準備
ローカル開発環境(Vagrant等)があれば良いですし、少々のお金を払っても良いならクラウドもお手軽です。今回はクラウドに作ったCentOS7サーバを使うことにしました。ということでOS準備までは割愛します。
PostgreSQLのインストール
公式ドキュメントにもある通り、yumで一発です。CentOS7の場合は、PostgreSQLの9.2がインストールされるようです。
# yum install postgresql-server
# psql --version
psql (PostgreSQL) 9.2.23
続いてDBの起動です。これも公式の手順通りに。
# postgresql-setup initdb
# systemctl enable postgresql.service
# systemctl start postgresql.service
一行目のinitdb
はまだ意味が分かっていません。これから勉強していきます。
(9/24追記)
initdbコマンドによって、データベースの実体となる単一のディレクトリが作成されます。
この例ではデフォルトでは/var/lib/pgsql/data
に作成されます。
データベースの確認
データベースの確認をしようとしたところ、以下のエラーが出ました。
# psql -l
psql: FATAL: ロール"root"は存在しません
PostgreSQLサーバではrootユーザでのログインを禁止しているようです。これも公式のドキュメントに頼ると、「postgresというユーザ名がよく使われる」との記述があったので、それに倣おうと思います。
# grep postgres /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
インストール時にpostgresユーザが作成されていました。今後はこれを使っていきましょう。
# su - postgres
$ psql -l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
無事データベースの確認ができました!