Help us understand the problem. What is going on with this article?

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

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

参考リンク

uhooi
iOSアプリ開発とSwiftが好きです✨ 趣味:テニス、アナログゲーム
https://theuhooi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away