Table of Contents
はじめに
PostgreSQL、またはPostgresは、SQLクエリ言語の実装を提供するリレーショナルデータベース管理システムです。標準に準拠し、信頼できるトランザクションや読み取りロックなしの同時実行性など、多くの高度な機能を備えています。
このガイドは、PostgreSQLのインストールから新しいユーザーとデータベースのセットアップまで、Ubuntu 20.04サーバーにPostgresを手早く立ち上げ、実行する方法を示します。 PostgreSQLデータベースのインストールと管理に関するより詳細なチュートリアルについては、Ubuntu 20.04にPostgreSQLをインストールして使用する方法を参照してください。
前提条件
このチュートリアルを実行するには、ガイドUbuntu 20.04の初期サーバーのセットアップに従って設定したUbuntu 20.04サーバー1台が必要です。この前提条件となるチュートリアルを完了すると、サーバーにはsudo権限と基本的なファイアウォールを備えたroot以外のユーザーがあるはずです。
ステップ1— PostgreSQLのインストール
PostgreSQLをインストールするには、まず、サーバーのローカルパッケージインデックスを更新します。
sudo apt update
その後、追加のユーティリティと機能をいくつか追加する-contribパッケージとともにPostgresパッケージをインストールします。
sudo apt install postgresql postgresql-contrib
ステップ2 — PostgreSQLのロールとデータベースの使用
デフォルトでは、Postgresは「ロール」と呼ばれる概念を使用して認証と承認を処理します。 これらは通常のUnixスタイルのユーザーとグループにいくつかの点で似ています。
インストール時に、Postgresは*ident*認証を使用するように設定されます。つまりPostgresロールは、名前の一致するUnix/Linuxシステムアカウントに関連付けられます。Postgres内にロールが存在する場合、同じ名前のUnix/Linuxユーザー名がそのロールとしてサインインできます。
インストール手順により、デフォルトのPostgresロールに関連付けられたpostgresというユーザーアカウントが作成されました。このアカウントを使用してPostgreにアクセスする方法はいくつかあります。一つは、次のように入力して、サーバー上のpostgresアカウントに切り替える方法です。
sudo -i -u postgres
次のように入力して、Postgresプロンプトにアクセスできます。
psql
これによりPostgreSQLプロンプトにログインし、そこからすぐにデータベース管理システムとやり取りできます。
PostgreSQLプロンプトを終了するには、次を実行します。
\q
これにより、postgres Linuxコマンドプロンプトに戻ります。通常のシステムユーザーに戻るには、exitコマンドを実行します。
exit
Postgresプロンプトに接続するもう一つの方法は、sudoを使用して、直接psqlコマンドをpostgresアカウントとして実行することです。
sudo -u postgres psql
これにより、中間のbashシェルを介さずにPostgresに直接ログインできます
ここでも、次のように入力して、Postgresの対話型セッションを終了できます。
\q
ステップ3 — 新しいロールの作成
postgresアカウントとしてログインしている場合、次のように入力して新しいロールを作成できます。
createuser --interactive
代わりに、通常のアカウントから切り替えずに各コマンドにsudoを使用する場合は、次のように入力します。
sudo -u postgres createuser --interactive
スクリプトはいくつかの選択を促し、応答に基づいて正しいPostgresコマンドを実行し、仕様に合ったユーザーを作成します。
[secondary_label Output]
Enter name of role to add: <^>sammy<^>
Shall the new role be a superuser? (y/n) <^>y<^>
ステップ4 — 新しいデータベースの作成
Postgres認証システムがデフォルトでもう1つ前提とするのは、ログインに使用されるすべてのロールについて、そのロールにはアクセス可能な同じ名前のデータベースがある、ということです。
つまり、前のセクションで作成したユーザーの名前がsammyの場合、そのロールはデフォルトで「sammy」とも呼ばれるデータベースへの接続を試行します。 createdbコマンドで適切なデータベースを作成できます。
postgres アカウントとしてログインしている場合、次のように入力します。
createdb <^>sammy<^>
代わりに、通常のアカウントから切り替えずに各コマンドにsudoを使用する場合は、次のように入力します。
sudo -u postgres createdb <^>sammy<^>
ステップ5 — 新しいロールでPostgresプロンプトを開く
identベースの認証でログインするには、Postgresロール、データベースと同じ名前のLinuxユーザーが必要です。
名前の一致するLinuxユーザーがいなければ、adduserコマンドで作成します。sudo権限(つまり、postgres ユーザーとしてログインしていない)を持つroot以外のアカウントからこれを行う必要があります。
sudo adduser <^>sammy<^>
この新しいアカウントが使用可能になったら、切り替えて次のように入力してデータベースに接続できます。
sudo -i -u <^>sammy<^>
psql
また、インラインでも接続できます:
sudo -u <^>sammy<^> psql
このコマンドは、すべてのコンポーネントが正しく設定されていると見なして自動ログインします。
ユーザーを別のデータベースに接続させたい場合は、次のようにデータベースを指定することで可能です。
psql -d <^>postgres<^>
ログインすると、次のように入力して現在の接続情報を確認できます。
\conninfo
[secondary_label Output]
You are connected to database "<^>sammy<^>" as user "<^>sammy<^>" via socket in "/var/run/postgresql" at port "5432".
まとめ
これで、Ubuntu 20.04サーバーでPostgreSQLがセットアップされました。Postgresやその使用方法の詳細については、次のガイドを参照してください。