はじめに
環境
OS:CentOS 7
概要
yumコマンドでインストールするだけ。
ついでなので、初期設定も記載しておく。
手順
yumコマンド実行
yum install postgresql-server
インストールディレクトリ:/var/lib/pgsql/
初期化
以下コマンドにより、インストールディレクトリに設定ファイルなどが配置される
postgresql-setup initdb
postgresql.conf
PostgreSQLの基本的な設定を記載する。
基本的なものは以下の通り。(詳しくは調べてね)
- 接続元のIPアドレス制限
- 最大接続数
- ポート
外部からも接続できるよう、listen_addressesを変更しておく。
listen_addresses='*'
なお、外部からアクセスする場合はポートを開放しておく必要がある。
以下のコマンドで開放しておこう。
firewall-cmd --zone=public --add-port=5432/tcp --permanent
設定内容の確認は以下
firewall-cmd --list-all
pg_hba.conf
クライアントのアドレスとロール名を指定し、どのDBへ接続許可をするかを設定する。
書き方は以下の通り
TYPE DATABASE USER ADDRESS METHOD
今回は、以下の設定をしておきます
host all all all password
TYPE
local,host,hostssl,hostnossl のいずれか 1 つを設定する
host,hostssl,hostnossl はTCP/IP を使った接続を行う場合に使用
※host を指定した場合は SSL または非 SSL での接続、hostssl を使った場合は SSL での接続、hostnossl は非 SSL での接続を許可する
DATABASE
接続を許可するデータベース名を指定する。
複数指定する場合はカンマ区切り
all:すべて
sameuser:ユーザと同じ名称のDB
USER
接続を許可するユーザ名を指定する。
複数指定する場合はカンマ区切り
all:すべてのユーザ
ADDRESS
接続を許可するIPアドレスを指定する
IPv4、IPv6の指定が可能で、allはすべてを許可する。
また、ホスト名での指定も可能
起動
以下のコマンドでPostgreSQLを起動する
service postgresql restart
以下で接続できることを確認する
psql -U postgres -h localhost
・・・・・あれ??
接続できない・・・。
インストールすると自動でpostgresユーザが作成されるはずなんだが・・・。
どうやら、ローカルからの接続の場合、
OSのユーザとパスワードが一致したユーザでないと接続できないらしい。
ほかのユーザでもPostgreSQLへログインできるよう、pg_hba.confの設定を変更する
local all all peer
を以下に変更し、
local all all trust
以下コマンドでPostgreSQLを再起動
systemctl restart postgresql.service
再度ローカルから接続してみる
画像で見てわかる通り、”-h localhost“は不要でした(笑
ユーザ(ロール)作成
基本的はログインユーザの作成方法です。
create role sample login password 'sample';
データベース作成
基本的なDBの作成方法です。
create database sample_db owner=sample template=template0 encoding='UTF8';
※変なところで改行されていますが、上記コマンドを入力してください。
Auto Commit
デフォルトでは、オートコミットはONになっています。
というより、PostgreSQLのサーバにオートコミットの設定はないらしく(ほんとか?
クライアント側で実装されているそうです。
一応、以下の方法で一時的にOFFにすることはできるが、再度接続した際にONに戻ってしまう。。。
なんかやり方あったような気がするんだけどなー
接続後:
\set AUTOCOMMIT off
\echo :AUTOCOMMIT
コメント