【PostgreSQL】PostgreSQL の運用管理(ユーザー管理、バキューム、インフラ運用など)【Part.7】

公開日時:2018年12月07日 / 最終更新日時:2019年02月11日

今回は PostgreSQL の運用管理(ユーザー管理、バキューム、インフラ運用など)について解説します。

 

 

vacuumdb コマンド

データベースを日々運用していくと、データの更新によって使用されなくなった不要領域が蓄積していきます。

vacuumdb コマンドはその不要領域を回収するコマンドです。

不要な領域が回収されると、その分の領域が使用できるようになります。

 

■デフォルト(オプションなし)

-bash-4.2$ vacuumdb
-bash-4.2$

 

 

■-f オプションの例

-bash-4.2$ vacuumdb -f
-bash-4.2$

 

 

■-a オプションの例

-bash-4.2$ vacuumdb -a
vacuumdb: vacuuming database "postgres"
vacuumdb: vacuuming database "template1"
vacuumdb: vacuuming database "testdb"
-bash-4.2$

 

-a オプションは、統計情報は収集・更新せずに、すべてのデータベースの不要領域を回収します。

しかし回収した不要領域の削除は行いません。

 

 

 

ユーザー管理

ユーザー管理の方法です。

PostgreSQL のユーザーは、OS のユーザーとは違います。

PostgreSQL のユーザーは、データベースクラスタ単位で作成され、クラスタ全体で利用できます。

 

ユーザーとロールの違い

 

ロールはグループですがユーザーと同じように利用できます。

 

 

CREATE ROLE コマンド

 

※CREATE ROLE <ROLE名>で作成されたロールは、デフォルトでは「NOLOGIN」になっているので、データベースへのアクセス権限を与える場合は明示的に「WITH LOGIN」が必要になります。

※CREATE USER <USER名>で作成されたユーザーはデフォルトで「LOGIN」になっているので、「WITH LOGIN」オプションは不要です。

 

 

ロール(ユーザー)に対してパスワードを設定する

【例】

CREATE ROLE Test01 WITH PASSWORD 'Password01';

 

 

CREATE USER コマンド

CREATE USER コマンドで、新規でデータベースロール(データベースユーザー)を作成することができます。

 

■CREATE ROLE と CREATE USER の違い

 

 

 

createuser コマンド

createuser コマンドで PostgreSQL の新規アカウントを作成できます。

 

■オプション

 

以下のように覚えると忘れにくいです。

 

■createuser コマンドを実行できる権限

createuser コマンドは以下の権限を持っているユーザーでのみ実行できます。

 

 

 

 

 

dropuser コマンド

PostgreSQL ユーザーアカウントを削除するコマンドです。

dropuser コマンドは「DROP ROLE」コマンドで一緒です。

ただし、データベースオブジェクトを所有するユーザーは削除できません。

 

 

 

■dropuser コマンドのオプション

 

 

 

REVOKE

REVOKE GRANT コマンドとは逆に「権限を取り消す」コマンドです。

※revoke の意味は「取消す、廃止する、解約する」という意味です。

 

■主な取り消しできる権限

 

【テーブルへのアクセス権限を取消す】

REVOKE <権限> ON <テーブル名> FROM <ユーザー名>;

 

【データベースへのアクセス権限を取消す】

REVOKE <権限> ON DATABASE <データベース名> FROM <ユーザー名>;

 

【スキーマへのアクセス権限を取消す】

REVOKE <権限> ON SCHEMA <スキーマ名> FROM <ユーザー名>;

 

テーブルの権限を削除する

REVOKE コマンドでテーブルの権限を削除します。

 

\c で対象のデータベースに接続します。

postgres-# \c testdb
You are now connected to database "testdb" as user "postgres".
testdb-#

 

現状の構成を確認します。

testdb=# \z 
                                 Access privileges 
 Schema |   Name    | Type  |     Access privileges     | Column access privileges 
--------+-----------+-------+---------------------------+-------------------------- 
 public | testtable | table | postgres=arwdDxt/postgres+| 
        |           |       | test01=arwd/postgres     +| 
        |           |       | test02=arwd/postgres     +| 
        |           |       | test03=arwd/postgres      | 
(1 row) 
 
testdb=#

 

 

REVOKE コマンドで DELETE 権限のみ削除します。(全部の権限ではない)

testdb=# REVOKE DELETE ON testtable FROM "test03";
REVOKE
testdb=#

 

 

確認します。

testdb=# \z 
                                 Access privileges 
 Schema |   Name    | Type  |     Access privileges     | Column access privileges 
--------+-----------+-------+---------------------------+-------------------------- 
 public | testtable | table | postgres=arwdDxt/postgres+| 
        |           |       | test01=arwd/postgres     +| 
        |           |       | test02=arwd/postgres     +| 
        |           |       | test03=arw/postgres ← DELETE 権限のみ消えています。 | 
(1 row) 
 
testdb=#

 

 

 

実行中の PostgreSQL のプロセスを探す

以下の「SELECT * FROM pg_stat_activity;」コマンドで実行中のプロセス一覧を表示できます。

postgres=# SELECT * FROM pg_stat_activity; 
 datid | datname  | pid  | usesysid | usename  | application_name | client_addr 
| client_hostname | client_port |         backend_start         |          xact_ 
start           |          query_start          |         state_change 
| waiting | state  |              query 
-------+----------+------+----------+----------+------------------+------------- 
+-----------------+-------------+-------------------------------+--------------- 
----------------+-------------------------------+------------------------------- 
+---------+--------+--------------------------------- 
 12926 | postgres | 5616 |       10 | postgres | psql             | 
|                 |          -1 | 2019-01-01 07:29:24.810218+00 | 2019-01-01 07: 
30:51.875193+00 | 2019-01-01 07:30:51.875193+00 | 2019-01-01 07:30:51.875196+00 
| f       | active | SELECT * FROM pg_stat_activity; 
(1 row) 
 
postgres=#

 

 

横長ではなく縦長で表示したい

SQL 文の実行結果が表示されたときに横長になると見にくくなります。

そのため「横長」ではなく「縦長」に表示したい場合があります。

postgres=# \x auto
Expanded display is used automatically.
postgres=#

 

 

■設定前

postgres=# SELECT * FROM pg_stat_activity; 
 datid | datname  | pid  | usesysid | usename  | application_name | client_addr 
| client_hostname | client_port |         backend_start         |          xact_ 
start           |          query_start          |         state_change 
| waiting | state  |              query 
-------+----------+------+----------+----------+------------------+------------- 
+-----------------+-------------+-------------------------------+--------------- 
----------------+-------------------------------+------------------------------- 
+---------+--------+--------------------------------- 
 12926 | postgres | 5616 |       10 | postgres | psql             | 
|                 |          -1 | 2019-01-01 07:29:24.810218+00 | 2019-01-01 07: 
30:51.875193+00 | 2019-01-01 07:30:51.875193+00 | 2019-01-01 07:30:51.875196+00 
| f       | active | SELECT * FROM pg_stat_activity; 
(1 row) 
 
postgres=#

 

 

■設定後

以下のように横長から縦長になり、すっきりとして SQL 文の結果が見やすくなりました。

postgres=# SELECT * FROM pg_stat_activity; 
-[ RECORD 1 ]----+-------------------------------- 
datid            | 12926 
datname          | postgres 
pid              | 5616 
usesysid         | 10 
usename          | postgres 
application_name | psql 
client_addr      | 
client_hostname  | 
client_port      | -1 
backend_start    | 2019-01-01 07:29:24.810218+00 
xact_start       | 2019-01-01 07:47:19.371005+00 
query_start      | 2019-01-01 07:47:19.371005+00 
state_change     | 2019-01-01 07:47:19.371007+00 
waiting          | f 
state            | active 
query            | SELECT * FROM pg_stat_activity; 
 
postgres=#

 

 

縦長、横長を切り替える

\x コマンドを繰り返すことで「on」「off」を切り替えます。

postgres=# \x
Expanded display is off.
postgres=# \x
Expanded display is on.
postgres=#

 

 

 

 

PostgreSQL シリーズ

今まで学習した PostgreSQL の技術をシリーズとしてまとめました。

 

【PostgreSQL】PostgreSQL の特徴と基本【Part.1】

 

【PostgreSQL】【正規化】リレーショナルデータベース(RDMS)の基本【Part.2】

 

【PostgreSQL】PostgreSQL のインストールと初期設定【Part.3】

 

【PostgreSQL】PostgreSQL の標準付属ツールの説明とコマンド手順【Part.4】

 

【PostgreSQL】PostgreSQL の設定ファイル(postgresql.conf、pg_hba.conf)の解説【Part.5】

 

【PostgreSQL】PostgreSQL のバックアップ手順とリストア手順【Part.6】

 

【PostgreSQL】PostgreSQL の運用管理(ユーザー管理、バキューム)【Part.7】

 

【PostgreSQL】PostgreSQL の基本的な SQL文 とオブジェクトについて【Part.8】

 

【PostgreSQL】PostgreSQL の組み込み関数、ユーザー定義関数、演算子について【Part.9】

 

【PostgreSQL】PostgreSQL のトランザクションについて【Part.10】

 

【PostgreSQL】SQL文【Part.11】

 

【PostgreSQL】テーブル設計(データ型、制約)【Part.12】

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Secured By miniOrange