インストール

yum -y localinstall https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
yum -y install postgresql10-server

yum info postgresql10-serverでインストールされたパッケージが分かる

# yum info postgresql10-server
Loaded plugins: fastestmirror, ovl
base                                                     | 3.6 kB     00:00
epel/x86_64/metalink                                     | 8.3 kB     00:00
epel                                                     | 4.7 kB     00:00
extras                                                   | 3.4 kB     00:00
pgdg10                                                   | 4.1 kB     00:00
remi-safe                                                | 2.9 kB     00:00
updates                                                  | 3.4 kB     00:00
(1/4): epel/x86_64/updateinfo                              | 907 kB   00:00
(2/4): epel/x86_64/primary_db                              | 6.3 MB   00:02
(3/4): pgdg10/7/x86_64/group_gz                            |  245 B   00:02
(4/4): pgdg10/7/x86_64/primary_db                          | 162 kB   00:03
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: mirror.reconn.ru
 * updates: ftp.iij.ad.jp
Available Packages
Name        : postgresql10-server
Arch        : x86_64
Version     : 10.3
Release     : 1PGDG.rhel7
Size        : 4.4 M
Repo        : pgdg10/7/x86_64
Summary     : The programs needed to create and run a PostgreSQL server
URL         : https://www.postgresql.org/
License     : PostgreSQL
Description : PostgreSQL is an advanced Object-Relational database management
            : system (DBMS). The postgresql10-server package contains the
            : programs needed to create and run a PostgreSQL server, which will
            : in turn allow you to create and maintain PostgreSQL databases.

バージョン10.3がインストールされたことが分かる

# /usr/pgsql-10/bin/postgres --version
postgres (PostgreSQL) 10.3

初期構築

# PGSETUP_INITDB_OPTIONS="--encoding=UTF-8 --no-locale" /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK

OS立ち上げ時に自動開始したい場合は以下を設定する

# systemctl enable postgresql-10
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-10.service to /usr/lib/systemd/system/postgresql-10.service.

開始する場合はこちら

# systemctl start postgresql-10

※このままrootユーザでpsqlコマンドを打つと怒らる

# psql
psql: FATAL:  role "root" does not exist

一旦postgresユーザで入ってからpsqlコマンドを打つ

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

postgres=#

\lを打つとpostgresユーザ用のDBが存在することが分かる

postgres-# \l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(3 rows)

ここで自分用のロールを作成
本例ではロールの権限としてLOGINCREATEDBPASSWORDを付与

postgres-# create role myuser LOGIN CREATEDB PASSWORD 'xxxxx';
CREATE ROLE
postgres=#
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 myuser    | Create DB                                                  | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

お次は、今作成したユーザで新しいデータベースを作成する

postgres=# create database mydb owner myuser;
CREATE DATABASE
postgres=#
postgres=# \l
                              List of databases
   Name    |   Owner   | Encoding  | Collate | Ctype |   Access privileges
-----------+-----------+-----------+---------+-------+-----------------------
 mydb      | myuser    | SQL_ASCII | C       | C     |
 postgres  | postgres  | SQL_ASCII | C       | C     |
 template0 | postgres  | SQL_ASCII | C       | C     | =c/postgres          +
           |           |           |         |       | postgres=CTc/postgres
 template1 | postgres  | SQL_ASCII | C       | C     | =c/postgres          +
           |           |           |         |       | postgres=CTc/postgres
(4 rows)

完成!

ここで、一旦閉じてmyuserユーザでログインできるか確認

postgres=# \q
-bash-4.2$ exit
logout

# psql --username=myuser --password --dbname=mydb
Password for user myuser:
psql: FATAL:  Peer authentication failed for user "myuser"

認証できないエラーになる

ここはpg_hba.confで設定を変える必要がある

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

以下の記述がpeerになっている箇所をmd5に変える

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5

これで再起動後にログインできるように!

# systemctl restart postgresql-10
# psql --username=myuser --password --dbname=mydb
Password for user myuser:
psql (10.3)
Type "help" for help.

mydb=>
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.