DockerのCentOS7上でpostgresqlをインストールして初期設定してみたので、その手順を書いていきます。
前提
Dockerのインストールとコンテナ作成は済んでいるものとして、Dockerについては一切触れません。
ネット上に情報がたくさんあるので各自で調べてください。
構築手順
環境
- CentOS 7.5
- PostgreSQL 10.4
インストール
レポジトリの追加
# sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
クライアントとサーバのインストール
# yum -y install postgresql10 postgresql10-server
コマンドのPATHの設定
# echo "PATH=/usr/pgsql-10/bin:$PATH" >> ~/.bashrc
# source ~/.bashrc
DBの初期化
# postgresql-10-setup initdb
OKという表示が出れば成功です!
DBの起動
# systemctl start postgresql-10 // 起動
# systemctl enable postgresql-10 // 自動起動
DBの操作
PostgreSQLにアクセス
# su - postgres
# psql
// 以下のプロンプトになれば成功!
postgres=#
ユーザの作成
例としてユーザ名admin、パスワードadmin、権限がデータベース作成のみのユーザを作成してみます。
postgres=# CREATE ROLE admin WITH LOGIN PASSWORD 'admin' CREATEDB;
postgres=# \du // 作成できたか確認
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
admin | Create DB | {}
データベースの作成
adminを所有者とするadminというデータベースを作成します。
postgres=# CREATE DATABASE admin OWNER admin;
postgres=# \l // 作成できたか確認
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+-----------+---------+-------+-----------------------
admin | admin | SQL_ASCII | C | C | =Tc/admin +
| | | | | admin=CTc/admin
データベースオブジェクトに対する権限
adminユーザにadminデータベースに関する全ての権限を付与します。
postgres=# GRANT ALL ON DATABASE admin TO admin\;
PostgreSQLから出る
postgres=# \q
認証方式の変更
デフォルトではpeerとident認証のみ許可されているので、この状態ではOSでadminユーザを作成する必要が出てきます。そこで、デフォルトの設定はコメントアウトして、MD5による暗号化を用いたパスワード認証を設定します。
# vi /var/lib/pgsql/10/data/pg_hba.conf // 以下のように編集
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
- local all all peer
+ local all all md5
変更の読み込み
# systemctl reload postgresql-10
adminユーザでアクセス
# psql -U admin
Password for user admin:
psql (10.4)
Type "help" for help.
admin=>
このようになれば成功です!
以上、PostgreSQLのインストールから基本設定でした