タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

CentOS7.0(Vagrant)にPostgreSQL 9.4インストール

前回、自分のPCにセットアップしたVagrant上のCentOS7.0へPostgresをインストールしようと思います。

PostgreSQLは、現時点での最新9.4.1で。

参考にさせていただいたサイトは、Installing PostgreSQL 9.4 And phpPgAdmin In CentOS 7/6.5/6.4です。

(1) yumリポジトリの設定追加(postgresql9.4.1)

  • yumリポジトリを追加し、その追加先よりインストールを行うようにします。
# rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
Retrieving http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
warning: /var/tmp/rpm-tmp.nimNLJ: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:pgdg-centos94-9.4-1              ################################# [100%]
#

(2) yum update

# yum update

(3) postgresql94インストール

# yum install postgresql94-server postgresql94-contrib

[...]

Installed:
  postgresql94-contrib.x86_64 0:9.4.1-1PGDG.rhel7
  postgresql94-server.x86_64 0:9.4.1-1PGDG.rhel7

Dependency Installed:
  libxslt.x86_64 0:1.1.28-5.el7
  postgresql94.x86_64 0:9.4.1-1PGDG.rhel7
  postgresql94-libs.x86_64 0:9.4.1-1PGDG.rhel7

Complete!

(4) データベースクラスタ初期化

# /usr/pgsql-9.4/bin/postgresql94-setup initdb
Initializing database ... OK

(5) postgresサービス化 / 開始

# systemctl enable postgresql-9.4
ln -s '/usr/lib/systemd/system/postgresql-9.4.service' '/etc/systemd/system/multi-user.target.wants/postgresql-9.4.service'
# systemctl start postgresql-9.4

(6) Iptables設定

  • 自分の環境では、firewall機能は、前回無効にしていました。
# systemctl list-unit-files | grep firewall
firewalld.service                           disabled

<< firewallありの場合の設定 >>
# firewall-cmd --permanent --add-port=5432/tcp
# firewall-cmd --reload

(7) 接続確認

# su - postgres
Last login: Tue Feb 10 23:55:53 EST 2015 on pts/0
-bash-4.2$ psql
psql (9.4.1)
Type "help" for help.

postgres=# \q

(8) ユーザーpostgresのパスワード設定

# su - postgres
-bash-4.2$ psql
psql (9.4.1)
Type "help" for help.

postgres=# \password postgres
Enter new password: ********
Enter it again: ********
postgres=# \q

(9) postgresアクセス許可設定

pg_hba.conf編集

# vim /var/lib/pgsql/9.4/data/pg_hba.conf

[...]
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.0.0/16          md5  # add
[...]

postgresql.conf編集

# vim /var/lib/pgsql/9.4/data/postgresql.conf

[...]
listen_addresses = '*'
[...]
port = 5432
[...]

postgresql再起動

# systemctl restart postgresql-9.4

(10) DB作成

Version確認

postgres=# select version();
                                                    version

---------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.4.1 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16), 64-bit
(1 row)

postgres=#

DB作成

postgres=# create database metaldb;
CREATE DATABASE
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 metaldb   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

テーブル作成

postgres=# \connect metaldb
You are now connected to database "metaldb" as user "postgres".
metaldb=# CREATE TABLE band
metaldb-# (
metaldb(#   id serial NOT NULL,
metaldb(#   name character varying(100),
metaldb(#   create_ts timestamp,
metaldb(#   update_ts timestamp,
metaldb(#   CONSTRAINT band_pkey PRIMARY KEY (id)
metaldb(# )
metaldb-# WITH (
metaldb(#   OIDS=FALSE
metaldb(# );
ALTER TABLE band
CREATE TABLE
metaldb=# ALTER TABLE band
metaldb-#   OWNER TO postgres;
ALTER TABLE

レコード追加

metaldb=# INSERT INTO band (name, create_ts)
metaldb-#   VALUES('Ozzy Osbourne band',current_timestamp);
INSERT 0 1
metaldb=#

(11) PgAdminⅢでアクセス確認

  • Windows7上のPgAdminⅢを起動し、Vagrant(CentOS7)のPostgresへアクセスしてみます。

f:id:no14141:20150211154258j:plain

f:id:no14141:20150211154506j:plain

無事に、metaldbのbandテーブルを確認できました!