前書き

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

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

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

前提条件

最初のことは、Debian 8 Stableシステムを稼働させることです。 Debian 8での初期サーバー設定の記事の手順に従ってください。 このチュートリアルでは、Debian 8 Stable Dropletの準備ができていることを前提としています。

特に断りのない限り、このチュートリアルのすべてのコマンドは、sudo特権を持つ非rootユーザーとして実行する必要があります。 ユーザーを作成してsudo権限を付与する方法については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-8 [Debian 8での初期サーバー設定]をご覧ください。

PostgreSQLのインストール

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

sudo apt-get update

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

Reading package lists... Done.

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

  • + postgresql-9.4 +:PostgreSQLサーバーパッケージ

  • + postgresql-client-9.4 +:PostgreSQLのクライアント

  • + postgresql +:http://debian-handbook.info/browse/stable/sect.building-first-package.html[Debian Handbook]またはhttp://www.debianで説明されている「メタパッケージ」。 org / doc / manuals / maint-guide / [Debian New Maintainers ‘Guide]

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

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アクセスでは機能しません):

su - postgres

これで、 `+ postgres`としてログインするはずです。 PostgreSQLコンソールを起動するには、「+ psql +」と入力します。

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 +`として発行する必要があることに注意してください。

createuser --interactive

これは基本的に、正しいPostgreSQLコマンドを呼び出して仕様に合ったユーザーを作成する対話型のシェルスクリプトです。 いくつかの質問があります:ロールの名前、スーパーユーザーであるかどうか、ロールが新しいデータベースを作成できるかどうか、ロールが新しいロールを作成できるかどうか。 `+ man +`ページには詳細情報があります:

man createuser

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

PostgreSQLは、デフォルトで、一致するシステムアカウントによって要求される認証ロールでセットアップされます。 (これに関する詳細は、http://www.postgresql.org/docs/8.1/static/user-manag.html [postgresql.org]で入手できます)。 また、ロールが接続するための一致するデータベースが存在するという前提があります。 そのため、「+ test1 」というユーザーがいる場合、そのロールはデフォルトで「 test1 +」というデータベースに接続しようとします。

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

createdb test1

新しいデータベース `+ test1 +`が作成されました。

新しいユーザーでPostgreSQLに接続する

`+ test1 `という名前のLinuxアカウントを持ち、それに対応するPostgreSQLの ` test1 `ロールを作成し、データベース ` test1 `を作成したとします。 Linuxのユーザーアカウントを ` test1 +`に変更するには:

su - test1

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

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)
);

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

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

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-doc +`のインストール: `+ sudo apt-get install postgresql-doc +

  • `+ / usr / share / doc / postgresql-doc-9.4 / tutorial / README `にインストールされた ` README +`ファイル

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

データベースのさまざまな機能を比較するには、チェックアウトできます。

役割と権限のより良い理解については、以下を参照してください。