はじめに
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をインストールするには、まず、サーバーのローカルパッケージインデックスを更新します。
その後、追加のユーティリティと機能をいくつか追加する-contrib
パッケージとともにPostgresパッケージをインストールします。
- sudo apt install postgresql postgresql-contrib
ステップ2 — PostgreSQLのロールとデータベースの使用
デフォルトでは、Postgresは「ロール」と呼ばれる概念を使用して認証と承認を処理します。 これらは通常のUnixスタイルのユーザーとグループにいくつかの点で似ています。
インストール時に、Postgresはident認証を使用するように設定されます。つまりPostgresロールは、名前の一致するUnix/Linuxシステムアカウントに関連付けられます。Postgres内にロールが存在する場合、同じ名前のUnix/Linuxユーザー名がそのロールとしてサインインできます。
インストール手順により、デフォルトのPostgresロールに関連付けられたpostgresというユーザーアカウントが作成されました。このアカウントを使用してPostgreにアクセスする方法はいくつかあります。一つは、次のように入力して、サーバー上のpostgresアカウントに切り替える方法です。
次のように入力して、Postgresプロンプトにアクセスできます。
これによりPostgreSQLプロンプトにログインし、そこからすぐにデータベース管理システムとやり取りできます。
PostgreSQLプロンプトを終了するには、次を実行します。
これにより、postgres Linuxコマンドプロンプトに戻ります。通常のシステムユーザーに戻るには、exit
コマンドを実行します。
Postgresプロンプトに接続するもう一つの方法は、sudo
を使用して、直接psql
コマンドをpostgresアカウントとして実行することです。
これにより、中間のbash
シェルを介さずにPostgresに直接ログインできます
ここでも、次のように入力して、Postgresの対話型セッションを終了できます。
ステップ3 — 新しいロールの作成
postgresアカウントとしてログインしている場合、次のように入力して新しいロールを作成できます。
代わりに、通常のアカウントから切り替えずに各コマンドにsudo
を使用する場合は、次のように入力します。
- sudo -u postgres createuser --interactive
スクリプトはいくつかの選択を促し、応答に基づいて正しいPostgresコマンドを実行し、仕様に合ったユーザーを作成します。
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 アカウントとしてログインしている場合、次のように入力します。
代わりに、通常のアカウントから切り替えずに各コマンドにsudo
を使用する場合は、次のように入力します。
- sudo -u postgres createdb sammy
ステップ5 — 新しいロールでPostgresプロンプトを開く
ident
ベースの認証でログインするには、Postgresロール、データベースと同じ名前のLinuxユーザーが必要です。
名前の一致するLinuxユーザーがいなければ、adduser
コマンドで作成します。sudo
権限(つまり、postgres ユーザーとしてログインしていない)を持つroot以外のアカウントからこれを行う必要があります。
この新しいアカウントが使用可能になったら、切り替えて次のように入力してデータベースに接続できます。
また、インラインでも接続できます:
このコマンドは、すべてのコンポーネントが正しく設定されていると見なして自動ログインします。
ユーザーを別のデータベースに接続させたい場合は、次のようにデータベースを指定することで可能です。
ログインすると、次のように入力して現在の接続情報を確認できます。
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
まとめ
これで、Ubuntu 20.04サーバーでPostgreSQLがセットアップされました。Postgresやその使用方法の詳細については、次のガイドを参照してください。