序章

リレーショナルデータベースは、多数のニーズに対応するデータ編成の基礎です。 オンラインショッピングからロケットの打ち上げまで、あらゆるものに電力を供給します。 両方とも由緒あるが、まだゲームに残っているデータベースはPostgreSQLです。 PostgreSQLはほとんどのSQL標準に準拠しており、ACIDトランザクションがあり、外部キーとビューをサポートしており、現在も活発に開発されています。

実行しているアプリケーションが安定性、パッケージ品質、および簡単な管理を必要とする場合、Debian 8(コードネーム「Jessie」)はLinuxディストリビューションの最良の候補の1つです。 他の「ディストリビューション」よりも少しゆっくりと動きますが、その安定性と品質はよく知られています。 アプリケーションまたはサービスにデータベースが必要な場合、Debian8とPostgreSQLの組み合わせは町で最高の1つです。

この記事では、PostgreSQLを新しいDebian8Stableインスタンスにインストールして開始する方法を紹介します。

前提条件

まず、Debian8Stableシステムを稼働させることです。 Debian8を使用した初期サーバーセットアップの記事の指示に従うことができます。 このチュートリアルは、Debian 8StableDropletの準備ができていることを前提としています。

特に明記されていない限り、このチュートリアルのすべてのコマンドは、sudo権限を持つroot以外のユーザーとして実行する必要があります。 ユーザーを作成してsudo権限を付与する方法については、 Debian8を使用した初期サーバーセットアップを確認してください。

PostgreSQLのインストール

PostgreSQLをインストールする前に、aptパッケージリストを次のように更新して、Debianリポジトリから最新の情報を入手していることを確認してください。

  1. sudo apt-get update

更新されているパッケージリストと次のメッセージが表示されます。

Reading package lists... Done.

postgresqlで始まるパッケージがいくつかあります。

postgresql-9.4パッケージを直接インストールするには:

  1. sudo apt-get install postgresql-9.4 postgresql-client-9.4

求められたら、Yと入力してパッケージをインストールします。 すべてがうまくいけば、パッケージはリポジトリからダウンロードされ、インストールされます。

インストールの確認

PostgreSQLサーバーが正しくインストールされ、実行されていることを確認するには、コマンドpsを使用できます。

# ps -ef | grep postgre

ターミナルに次のようなものが表示されます。

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process 

成功! PostgreSQLが正常にインストールされ、実行されています。

PostgreSQLデータベースへのアクセス

Debianでは、PostgreSQLはpostgresと呼ばれるデフォルトのユーザーとデフォルトのデータベースでインストールされます。 データベースに接続するには、最初にrootとしてログインしているときに次のコマンドを発行してpostgresユーザーに切り替える必要があります(これはsudoアクセスでは機能しません)。

  1. su - postgres

これで、postgresとしてログに記録されます。 PostgreSQLコンソールを起動するには、psqlと入力します。

  1. psql

終わり! PostgreSQLコンソールにログオンする必要があります。 次のプロンプトが表示されます。

psql (9.4.2)
Type "help" for help.

postgres=# 

psqlコンソールを終了するには、コマンド\qを使用するだけです。

新しい役割の作成

デフォルトでは、Postgresは「ロール」と呼ばれる概念を使用して認証と承認を支援します。 これらは、いくつかの点で通常のUnixスタイルのアカウントに似ていますが、PostgreSQLはユーザーとグループを区別せず、代わりに、より柔軟な用語「ロール」を優先します。

インストール時に、PostgreSQLは「ident」認証を使用するように設定されます。つまり、PostgreSQLの役割を一致するUnix/Linuxシステムアカウントに関連付けます。 PostgreSQLの役割が存在する場合は、関連するLinuxシステムアカウントにログインすることでサインインできます。

インストール手順により、デフォルトのPostgresロールに関連付けられたpostgresというユーザーアカウントが作成されました。

追加の役割を作成するには、createuserコマンドを使用できます。 このコマンドは、PostgreSQLコンソール内ではなく、ユーザーpostgresとして発行する必要があることに注意してください。

  1. createuser --interactive

これは基本的に、適切なPostgreSQLコマンドを呼び出して仕様に合わせたユーザーを作成するインタラクティブなシェルスクリプトです。 ロールの名前、スーパーユーザーにする必要があるかどうか、ロールが新しいデータベースを作成できるかどうか、ロールが新しいロールを作成できるかどうかなど、いくつかの質問が表示されます。 manページに詳細情報があります。

  1. man createuser

新しいデータベースの作成

PostgreSQLはデフォルトで、一致するシステムアカウントによって要求される認証ロールで設定されています。 (これについての詳細は、 postgresql.org で入手できます)。 また、接続するロールに一致するデータベースが存在することを前提としています。 したがって、test1というユーザーがいる場合、そのロールはデフォルトでtest1というデータベースに接続しようとします。

postgresユーザーとして次のコマンドを呼び出すだけで、適切なデータベースを作成できます。

  1. createdb test1

これで、新しいデータベースtest1が作成されました。

新規ユーザーによるPostgreSQLへの接続

test1という名前のLinuxアカウントがあり、それに一致するPostgreSQL test1ロールを作成し、データベースtest1を作成したとします。 Linuxのユーザーアカウントをtest1に変更するには:

  1. su - test1

次に、次のコマンドを使用して、test1PostgreSQLロールとしてtest1データベースに接続します。

  1. psql

これで、postgresの代わりに新しく作成されたユーザーtest1を含むPostgreSQLプロンプトが表示されます。

テーブルの作成と削除

PostgreSQLデータベースシステムに接続する方法がわかったので、いくつかの基本的なタスクを完了する方法について説明します。

まず、いくつかのデータを格納するためのテーブルを作成しましょう。 遊具を説明するテーブルを作成しましょう。

このコマンドの基本的な構文は次のようになります。

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

ご覧のとおり、テーブルに名前を付けてから、必要な列、列の種類、フィールドデータの最大長を定義します。 オプションで、各列にテーブル制約を追加することもできます。

Postgresでテーブルを作成および管理する方法について詳しくは、 クラウドサーバー上のPostgreSQLでテーブルを作成、削除、および管理する方法記事。

この目的のために、次のような単純なテーブルを作成します。

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

私達は私達が持っている装置を目録にする遊び場のテーブルを作りました。 これは、シリアルタイプの機器IDから始まります。 このデータ型は自動インクリメント整数です。 この列に主キーの制約を与えました。これは、値が一意であり、nullであってはならないことを意味します。

2つの列については、フィールドの長さを指定していません。 これは、長さがタイプによって暗示されるため、一部の列タイプは設定された長さを必要としないためです。

次に、機器のタイプと色の列を示します。それぞれを空にすることはできません。 次に、場所の列を作成し、値が8つの可能な値のいずれかである必要がある制約を作成します。 最後の列は、機器を設置した日付を記録した日付列です。

表を表示するには、psqlプロンプトでコマンド\dtを使用します。 結果は次のようになります

             List of relations
 Schema |    Name    | Type  |  Owner 
--------+------------+-------+----------
 public | playground | table | postgres

ご覧のとおり、遊び場のテーブルがあります。

テーブル内のデータの追加、クエリ、および削除

テーブルが作成されたので、そこにデータを挿入できます。

スライドとスイングを追加しましょう。 これを行うには、追加するテーブルを呼び出し、列に名前を付けてから、各列のデータを提供します。 スライドとスイングは次のように追加できます。

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

あなたはいくつかのことに気付くはずです。 まず、列名は引用符で囲まないようにする必要がありますが、入力する列の値には引用符が必要であることに注意してください。

もう1つ覚えておくべきことは、equip_id列に値を入力しないことです。 これは、テーブルに新しい行が作成されるたびにこれが自動生成されるためです。

次に、次のように入力して、追加した情報を取得できます。

SELECT * FROM playground;

出力は次のようになります

 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16

ここでは、equip_idが正常に入力され、他のすべてのデータが正しく整理されていることがわかります。 スライドが壊れて遊び場から削除した場合は、次のように入力してテーブルから行を削除することもできます。

DELETE FROM playground WHERE type = 'slide';

テーブルを再度クエリすると、次のようになります。

SELECT * FROM playground;

スライドがテーブルの一部ではなくなったことがわかります。

 equip_id | type  | color | location | install_date 
----------+-------+-------+----------+--------------
        1 | slide | blue  | south    | 2014-04-28

便利なコマンド

現在の環境を把握するのに役立ついくつかのコマンドを次に示します。

  • :ここにリストされていないものを含むpsqlコマンドの完全なリストを取得します。

  • \ h :SQLコマンドのヘルプを取得します。 これに続いて特定のコマンドを実行すると、構文のヘルプを取得できます。

  • \ q :psqlプログラムを終了し、Linuxプロンプトを終了します。

  • \ d :現在のデータベースで使用可能なテーブル、ビュー、およびシーケンスを一覧表示します。

  • \ du :利用可能な役割を一覧表示します

  • \ dp :リストアクセス権限

  • \ dt :テーブルを一覧表示します

  • \ l :データベースを一覧表示します

  • \ c :別のデータベースに接続します。 これにデータベース名を続けます。

  • \ password :次のユーザー名のパスワードを変更します。

  • \ conninfo :現在のデータベースと接続に関する情報を取得します。

これらのコマンドを使用すると、PostgreSQLデータベース、テーブル、およびロールをすぐにナビゲートできるはずです。

結論

これで、Debianシステムで完全に機能するPostgreSQLデータベースが稼働しているはずです。 おめでとう! ここから行くべきドキュメントがたくさんあります:

  • PostgreSQLマニュアル

  • パッケージのインストールpostgresql-docsudo apt-get install postgresql-doc

  • READMEファイルが/usr/share/doc/postgresql-doc-9.4/tutorial/READMEにインストールされています

PostgreSQLでサポートされているSQLコマンドの完全なリストについては、次のリンクをたどってください。

データベースのさまざまな機能を比較するには、以下を確認してください。

役割と権限の理解を深めるには、以下を参照してください。