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を選択。
環境を選択すると環境にあったコマンドが表示されるのでそのとおりに実行していく。
インストールの概略は次のとおり。
- 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ユーザーで操作できるように設定する。
設定に際し次のページを参考にしました。
macにVagrant + 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