ユーザ用ツール

サイト用ツール


postgres

文書の過去の版を表示しています。


PostgreSQL

フリーのRDBMS

インストール

brew install postgresql

ユーザとロール

ロールは権限の主体。ユーザはログイン可能なロールの一種という位置付け。CREATE USERはCREATE ROLEの別名で、LOGIN属性付でCREATE ROLEを行う。

ユーザとパスワードによるログイン

初期状態では、UNIXのユーザと同じ名前のデータベースユーザが、データベースユーザと同じ名前のデータベースにアクセスすることしかできないように設定されている。MySQL等と同様に任意のデータベースユーザ名で Postgres にログインを可能にするには pg_hba.conf を書き直す。

以下の設定でローカルホストから任意のユーザ名で任意のデータベースにアクセスできる。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               md5 
host    all         all         127.0.0.1/32          md5

pg_hba.conf は上から順に評価し最初に適用された行のメソッドが用いられる点に注意。複数の条件に当てはまる場合はそのなかの一番上のMETHODが使われる。pg_hbaを設定したのにまだIDENT authentication failed for user …といわれる場合は順番にも注意して見直す。

ネットワーク越しでアクセス

デフォルトではlocalhostからのアクセスしか受け付けない。

hogeデータベースをfugaというユーザによる192.168.1.0/24からパスワード認証でアクセス許可するよう設定してみる

pg_hba.conf(CentOSでyumインストールの場合 /var/lib/pgsql/data/pg_hba.conf にある)を修正

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               md5 
host    hoge        fuga        192.168.1.0/24        md5

postgresql.conf(CentOSでyumインストールの場合 /var/lib/pgsql/data/postgresql.conf にある)を修正

listen_addresses = ‘*’ 

* はすべてのホストからのTCP接続を受け付ける設定。pg_hba.confの設定をしていれば無制限にアクセスされる事は無いが、こちらで制限するとTCPレベルで遮断できるのでより安全である。

スキーマ

データベース内にスキーマを作成できる。スキーマは名前空間のようなものでスキーマが異なれば同じ名前のテーブルを作成できる。テーブルを特定するには、スキーマ指定とテーブル名の指定が必要。スキーマを省略すると public というスキーマが選択されたことになる。

テーブル空間

テーブル毎に、テーブルを作成する物理的な場所を指定できる。よく使われるテーブルはHDDではなくSSDに作成するといったことができる。

データ使用量を調べる

deleteした領域は解放されず残っている。DBのレコード数のわりにデータ使用量が多い時は vaccum すべし

SELECT  pg_size_pretty(pg_database_size('database_name'));
vacuum analyze schema_name.table_name;
 
vacuum FULL schema_name.table_name;

ジョブ

実行中のジョブ一覧

SELECT * FROM pg_stat_activity;

実行中のジョブをkillする

実行中のジョブを検索してpidを調べて、以下を実行

SELECT pg_cancel_backend(<pid>);
postgres.1574932756.txt.gz · 最終更新: 2019/11/28 09:19 by nullpon