Ubuntu16.04にPostgreSQLをインストールして使用する方法

前書き

リレーショナルデータベース管理システムは、多くのWebサイトやアプリケーションの重要なコンポーネントです。これらは、情報を保存、整理、およびアクセスするための構造化された方法を提供します。

[**PostgreSQL **](https://cloud.tencent.com/product/postgresql?from=10680)またはPostgresは、SQLクエリ言語の実装を提供するリレーショナルデータベース管理システムです。これは、多くの小規模および大規模プロジェクトで人気のある選択肢であり、標準に準拠し、信頼性の高いトランザクションや読み取りロックなしの同時実行性などの多くの高度な機能を備えているという利点があります。

このガイドでは、PostgresをUbuntu 16.04 VPSインスタンスにインストールする方法を示し、それを使用するためのいくつかの基本的な方法を紹介します。

インストール

sudoコマンドを使用でき、ファイアウォールがオンになっている、root以外のアカウントを持つUbuntu サーバーが必要です。サーバーをお持ちでない方は、[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。

UbuntuのデフォルトリポジトリにはPostgresパッケージが含まれているため、 aptパッケージシステムを使用してこれらのパッケージを簡単にインストールできます。

これはこのセッションでの aptの最初の使用であるため、ローカルパッケージインデックスを更新する必要があります。次に、Postgresパッケージといくつかの追加のユーティリティと関数を追加する -contribパッケージをインストールできます。

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

ソフトウェアがインストールされたので、それがどのように機能し、使用する可能性のある同様のデータベース管理システムとどのように異なるかを理解できます。

PostgreSQLの役割とデータベースを使用する

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

インストール後、Postgresは** ID認証**を使用するように設定されます。これは、Postgresの役割を一致するUnix / Linuxシステムアカウントに関連付けることを意味します。 Postgresに役割が存在する場合、同じ名前のUnix / Linuxユーザー名がその役割としてログインできます。

このアカウントを使用してPostgresにアクセスする方法はいくつかあります。

postgresアカウントに切り替えます

インストールプロセスでは、デフォルトのPostgresロールに関連付けられた postgresという名前のユーザーアカウントが作成されます。 Postgresを使用するために、このアカウントにログインできます。

次のように入力して、サーバーの postgresアカウントに切り替えます。

sudo -i -u postgres

次のように入力すると、Postgresプロンプトにすぐにアクセスできます。

psql

すぐにログインして、データベース管理システムと対話できるようになります。

次のコマンドを入力して、PostgreSQLプロンプトを終了します。

\ q

これで、 postgresLinuxコマンドプロンプトに戻るはずです。

アカウントを切り替えずにPostgresのヒントにアクセスする

sudo権限を持つ postgresアカウントを直接使用して、必要なコマンドを実行することもできます。

たとえば、最後の例では、Postgresプロンプトを入力するだけです。次のような sudo権限を持つ postgresユーザーとして単一のコマンド psqlを実行することにより、これを1つのステップで実行できます。

sudo -u postgres psql

これにより、中間の「bash」シェルを介さずにPostgresに直接ログインします。

同様に、次のように入力して、インタラクティブなPostgresセッションを終了できます。

\ q

新しい役割を作成する

現在、データベースでは「postgres」ロールのみを構成しています。 createroleコマンドを使用して、コマンドラインから新しい役割を作成できます。 --interactiveフラグは、必要な値を入力するように促します。

postgresアカウントとしてログインしている場合は、次のように入力して新しいユーザーを作成できます。

createuser --interactive

逆に、通常のアカウントを切り替えずに各 sudoコマンドを使用する場合は、次のように入力できます。

sudo -u postgres createuser --interactive

スクリプトは、いくつかのオプションの入力を求め、応答に基づいて正しいPostgresコマンドを実行して、仕様に従ってユーザーを作成します。

Enter name of role to add: sammy
Shall the newrole be a superuser?(y/n) y

いくつかの追加のフラグを渡すことで、より詳細な制御を得ることができます。 manページビューオプションを表示します。

man createuser

新しいデータベースを作成する

デフォルトでは、Postgres認証システムのもう1つの前提は、ログインに使用されたロールと同じ名前のデータベースがあり、そのロールがそのロールにアクセスできることです。

したがって、前のセクションで sammyという名前のユーザーを作成した場合、ロールはデフォルトで呼び出される sammyデータベースに接続しようとします。 createdbコマンドを使用して、適切なデータベースを作成できます。

postgresアカウントとしてログインしている場合は、次のように入力できます。

createdb sammy

逆に、通常のアカウントを切り替えずに sudoのすべてのコマンドを使用する場合は、次のように入力できます。

sudo -u postgres createdb sammy

新しい役割でPostgresプロンプトを開きます

「ident」認証ベースのログインを使用するには、Postgresロールおよびデータベースと同じ名前のLinuxユーザーが必要です。

一致するLinuxユーザーがいない場合は、 adduserコマンドを使用して作成できます。これは、 sudo権限を持つアカウント( postgresユーザーとしてログインしていない)から行う必要があります。

sudo adduser sammy

適切なアカウントを取得したら、次のように入力してデータベースに切り替えて接続できます。

sudo -i -u sammy
psql

または、これをインラインで実行することもできます。

sudo -u sammy psql

すべてのコンポーネントが適切に構成されていると仮定すると、自動的にログインします。

ユーザーが他のデータベースに接続できるようにする場合は、データベースを指定することでこれを行うことができます。

psql -d postgres

ログイン後、次のように入力して、現在の接続情報を確認できます。

\ conninfo
You are connected to database "sammy"as user "sammy" via socket in"/var/run/postgresql" at port "5432".

これは、デフォルト以外のデータベースまたはデフォルト以外のユーザーに接続する場合に役立ちます。

テーブルの作成と削除

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

機材を数えることができる遊び場テーブルを作りました。これは、タイプ serialのデバイスIDで始まります。このデータタイプは自動インクリメント整数です。この列にプライマリキー制約を割り当てました。つまり、値は一意であり、nullであってはなりません。

2つの列( equip_id install_date)については、フィールドの長さを指定しませんでした。これは、タイプが長さを意味するため、一部の列タイプは長さを設定する必要がないためです。

次に、デバイスの列に「type」と「color」を指定します。それぞれを空にすることはできません。 location列を作成し、値が8つの可能な値の1つである必要がある制約を作成します。最後の列は日付列で、機器を設置した日付を記録しています。

次のように入力すると、新しいテーブルを表示できます。

\ d
     List of relations
 Schema |          Name           |   Type   | Owner 
- - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - +- - - - - - - public| playground              | table    | sammy
 public| playground_equip_id_seq | sequence |sammy(2 rows)

遊び場のテーブルはここにありますが、「シーケンス」の一種であるいわゆる「playground_equip_id_seq」もあります。これは、 equip_id列に提供する serialタイプの表現です。これにより、シーケンス内の次の番号が追跡され、このタイプの列用に自動的に作成されます。

シーケンスなしでリストを表示したいだけの場合は、次のように入力できます。

\ dt
   List of relations
 Schema |    Name    | Type  | Owner 
- - - - - - - - +- - - - - - - - - - - - +- - - - - - - +- - - - - - - public| playground | table |sammy(1 row)

テーブル内のデータを追加、照会、および削除します

これでテーブルができたので、そこにいくつかのデータを挿入できます。

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

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-282| swing | yellow | northwest |2010-08-16(2 rows)

ここでは、 equip_idが正常に入力され、他のすべてのデータが正しく整理されていることがわかります。

遊び場のスライドが切断されていて削除する必要がある場合は、次のように入力してテーブルから行を削除することもできます。

DELETE FROM playground WHERE type ='slide';

テーブルを再度クエリすると、スライドがテーブルの一部ではなくなっていることがわかります。

SELECT * FROM playground;
 equip_id | type  | color  | location  | install_date 
- - - - - - - - - - +- - - - - - - +- - - - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - - - 2| swing | yellow | northwest |2010-08-16(1 row)

テーブルに列を追加およびテーブルから削除する方法

テーブルの作成後にテーブルを変更して列を追加する場合は、これを簡単に行うことができます。

次のように入力して、各機器の最後のメンテナンス訪問を表示する列を追加できます。

ALTER TABLE playground ADD last_maint date;

テーブル情報をもう一度見ると、新しい列が追加されていることがわかります(ただし、データは入力されていません)。

SELECT * FROM playground;
 equip_id | type  | color  | location  | install_date | last_maint 
- - - - - - - - - - +- - - - - - - +- - - - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - - - +- - - - - - - - - - - - 2| swing | yellow | northwest |2010-08-16|(1 row)

列は簡単に削除できます。スタッフが別のツールを使用してメンテナンス履歴を追跡していることがわかった場合は、次のように入力してこの列を削除できます。

ALTER TABLE playground DROP last_maint;

テーブルのデータを更新する方法

テーブルにレコードを追加する方法とそれらを削除する方法は知っていますが、既存のエントリを変更する方法については説明していません。

必要なレコードを照会し、列を使用する値に設定することにより、既存のエントリの値を更新できます。 「swing」レコードを照会して(これはテーブルのスイングに一致します)、その色を「red」に変更できます。スインググループのペイントジョブを描く場合、それは役に立つかもしれません:

UPDATE playground SET color ='red' WHERE type ='swing';

データを再度クエリすることで、操作の成功を確認できます。

SELECT * FROM playground;
 equip_id | type  | color | location  | install_date 
- - - - - - - - - - +- - - - - - - +- - - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - - - 2| swing | red   | northwest |2010-08-16(1 row)

ご覧のとおり、スライドは赤で登録されています。

結論として ##

これで、Ubuntu16.04サーバーにPostgreSQLがセットアップされました。

その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。

参照:「Ubuntu16.04にPostgreSQLをインストールして使用する方法」

Recommended Posts

Ubuntu16.04にPostgreSQLをインストールして使用する方法
Ubuntu20.04にDockerをインストールして使用する方法
Ubuntu18.04にCurlをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にDockerをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にPostgreSQLをインストールする方法
Ubuntu18.04にMySQLWorkbenchをインストールして使用する方法
Ubuntu 16.04 /18.04にPycharmとIpythonをインストールする方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
CentOS7にDockerをインストールして使用する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
CentOS8にCurlをインストールして使用する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu16.04にMoodleをインストールする方法