環境
- OS:CentOS 7.3-1611 64bit Minimal
- PostgreSQL:9.6.3
インストール
PostgreSQLのインストール
yumでbaseリポジトリからインストールできないか確認したところ、バージョンが 9.2
と古かったです。
$ yum list | grep postgresql-server
postgresql-server.x86_64 9.2.18-1.el7 base
そのため、公式サイトにある通り、リポジトリを追加してからインストールします。
# pgdg96リポジトリを追加する
$ sudo yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
# PostgreSQLサーバーをインストールする
$ sudo yum install -y postgresql96-server postgresql96-contrib
バージョンの確認
インストールできたかどうか、バージョンを確認してみます。
$ psql --version
psql (PostgreSQL) 9.6.3
9.6.3
と表示されているため、インストールに成功しています。
初期化
DBを初期化します。
初期化時にデータベースクラスタというDBの集合体を作成します。
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
操作方法
サービスの起動
$ systemctl start postgresql-9.6.service
サービスの自動起動
OSの起動時にPostgreSQLが自動で起動するように設定します。
$ systemctl enable postgresql-9.6.service
ユーザーの作成
psql -l
を実行したところ、ロールが存在しないと怒られてしまいました。
$ psql -l
psql: FATAL: ロール"{ログインユーザー名}"は存在しません
DBの初期化時に postgres
というユーザーが作成されるので、パスワードを設定してログインし、先ほどまでログインしていたユーザーと同名のロールを作成します。
# `postgres` ユーザーにパスワードを設定する
$ sudo passwd postgres
# `postgres` ユーザーでログインする
$ su - postgres
# `postgres` へ接続する
$ psql
psql (9.6.3)
"help" でヘルプを表示します.
# ロールを作成する
postgres=# create role {ユーザー名} login createdb password '{パスワード}';
CREATE ROLE
ロールを作成したら、先程までログインしていたユーザーへ戻し、DBを操作できるようになったか確認します。
# DBを切断する
postgres=# \q
# `postgres` ユーザーをログアウトする
$ exit
ログアウト
# DBの一覧を出力する
$ 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 行)
無事操作できるようになりました。
サービスの停止
$ systemctl stop postgresql-9.6.service
その他の操作方法
DBの作成・接続、テーブルの作成や基本コマンドについてはMac版と同様のため、こちらをご参照ください。