ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

CentOS7にPostgreSQL10をインストール

CentOS7.5にPostgreSQL10.4をインストールした。

目次


インストール

インストールはPostgreSQLのWebサイトにしたがっておこなった。

PostgreSQL Top
https://www.postgresql.org/

TopページにあるDownloadリンクをクリック。
Red Hat family Linuxの中にあるCentOSをクリックするとインストールの解説ページに移る。

https://www.postgresql.org/download/linux/redhat/

解説ページで環境を選択していく。
今回選択した環境は次のとおり。
PostgreSQLのversionは10を選択。
platformはCentOS 7を選択。
architectureはx86_64を選択。
環境を選択すると環境にあったコマンドが表示されるのでそのとおりに実行していく。

f:id:rowingfan:20180730115137p:plain

インストールの概略は次のとおり。

  • PostgreSQL Yum Repositoryをインストール
  • RepositoryからPostgreSQLをインストール
  • postgres serverをインストール
  • データベースを初期化する
  • 起動設定をする


実際にインストールする。
MacPCはターミナル、WindowsPCはPuttyから操作した。
インストール中に確認がある場合はy(Yes)と答えて続行する。

The PostgreSQL Yum Repositoryをインストール

[vagrant@localhost ~]$ sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm


The PostgreSQL Yum RepositoryからPostgreSQLをインストール

[vagrant@localhost ~]$ sudo yum install postgresql10


serverをインストール

[vagrant@localhost ~]$ sudo yum install postgresql10-server


initializeする

[vagrant@localhost ~]$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb


サーバ起動時に自動でPostgreSQLも起動する設定をする
パスワードをきかれたらVagrantのパスワードを入力

[vagrant@localhost ~]$ systemctl enable postgresql-10


PostgreSQLを起動する

インストールが成功したら実際に使ってみる。
起動と停止のやりかたは次のページを参考にしました。

WEB ARCH LABO
PostgreSQL 10 を CentOS 7 に yum インストールする手順
https://weblabo.oscasierra.net/postgresql10-centos7-install/

起動
パスワードをきかれたらVagrantのパスワードを入力する。

[vagrant@localhost ~]$ systemctl start postgresql-10


起動したらデフォルトで用意されているpostgresデータベースにログインする。

[vagrant@localhost ~]$ sudo -u postgres psql -U postgres


ログインできると次の表示が出る。

psql (10.4)
Type "help" for help.
postgres=#


操作してみる。
データベース一覧を表示

postgres=# \l


                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 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
(3 rows)

表示できた。

データベースからログアウトする。

postgres=# \q


ロールの作成

初期設定のままだとvagrantユーザーでpsqlコマンドが使えない。
試してみる。

[vagrant@localhost ~]$ psql -l


vagrantロールがないというエラー表示が返ってくる。

psql: FATAL:  role "vagrant" does not exist


vagrantユーザーからcreatedbもできない。

[vagrant@localhost ~]$ createdb test


同じくエラー表示

createdb: could not connect to database template1: FATAL:  role "vagrant" does not exist


vagrantユーザーで操作できるように設定する。
設定に際し次のページを参考にしました。

macVagrant + VirtualBox + UbuntuでPhoenixFrameworkの開発環境を整えてみた
https://qiita.com/matken11235/items/78edd09fa421b6da4e38

PostgreSQL
Top > Documentation > Manuals > PostgreSQL 10 CREATE ROLE SQL Commands
https://www.postgresql.org/docs/10/static/sql-createrole.html

PostgreSQL 10.4文書
パート3 サーバの管理
第21章 データベースロール
https://www.postgresql.jp/document/10/html/user-manag.html

まずpostgresユーザーでpostgresデータベースにログインする。

[vagrant@localhost ~]$ sudo -u postgres psql -U postgres


vagrantロールをつくる。

postgres=# create role vagrant with login createdb;


成功すると次の表示が返ってくる。

CREATE ROLE


postgresユーザーのパスワードを変更したほうが良いそうなので変更する。

postgres=# alter user postgres password 'postgres';


成功すると返答がある。

ALTER ROLE


ロールができたらvagrantユーザーから操作できるか試す。
一旦postgresデータベースからログアウト。

postgres=# \q


vagrantユーザーからpsqlコマンドを試す。
データベースの一覧表を表示する。

[vagrant@localhost ~]$ psql -l


                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 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          +
(3 rows)


一覧表が返ってきた。
設定がうまくいったようなのでデータベースをつくる。

[vagrant@localhost ~]$ createdb test


何も返ってこないので確認してみる。

[vagrant@localhost ~]$ psql -l


                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 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
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)


成功していた。
今度はテーブルをつくる。
まずtestデータベースにログイン。

[vagrant@localhost ~]$ psql test


表示が次のようになる。

psql (10.4)
Type "help" for help.

test=>


テーブル作成。

test=> create table tests (crewname varchar(30));


返答がある。

CREATE TABLE


確認してみる。

test=> \dt


         List of relations
 Schema |  Name  | Type  |  Owner
--------+--------+-------+---------
 public | tests | table | vagrant
(1 row)

テーブル作成も成功。

ログアウトする。

test=> \q


停止

PostreSQLを停止。
パスワードをきかれたらVagrantのパスワードを入力

[vagrant@localhost ~]$ systemctl stop postgresql-10


感想

環境によって扱い方の違いがあるので難しい。
知識が浅いのが原因。
OSやPostgreSQLのユーザーの意味がわかっていない。
PostgreSQLのroleがわかっていない。
少しずつでも理解していきたい。

今回の環境

CentOS 7.5
(ホストOS: Windows10, macOS 10.13.5)
Vagrant 2.1.2
PostgreSQL 10.4