CentOS
PostgreSQL
centos7
PostgreSQL9.6

CentOS7.3にPostgreSQL9.6.3をインストールしてみた

More than 1 year has passed since last update.

環境

  • 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版と同様のため、こちらをご参照ください。

参考リンク