PostgreSQL は、世界中でサポートされているオープンソース データベースです。 30 年以上のサービス実績を持つ PostgreSQL は、利用可能なさまざまなアドオンのおかげで、その堅牢性、スケーラビリティ、およびパフォーマンスで有名です。
まず、SSH 接続を介してサーバーに接続します。まだ行っていない場合は、ガイドに従って SSH で安全に接続することをお勧めします。ローカル サーバーの場合は、次の手順に進み、サーバーのターミナルを開きます。
PostgreSQL のインストール
PostgreSQL のインストールを続行するには、apt パッケージ マネージャーを使用します。必ずキャッシュを更新してください:
$ sudo apt update && sudo apt install postgresql postgresql-contrib
インストールが完了すると、サービスはすぐに利用可能になります。 /var/log/postgresql/postgresql-10-main.log のログ ファイルを確認してください
# tail /var/log/postgresql/postgresql-10-main.log
...LOG: database system is ready to accept connections
...
すべてが正しく機能すると、上記のテキストがログ ファイルの最後の行に表示されます。
インストールを確認しています
PostgreSQL が正常にインストールされたことを確認するには、psql というコマンド ライン クライアントを使用します。まず、サービスによってインストールされたデフォルトのユーザーを使用します。データベースにアクセスするために、PostgreSQL のデフォルト構成の認証プロセスは同じシステム ユーザーを使用します。
デフォルト ユーザーでログインするには、コマンド ラインから次を実行します
$ sudo -i -u postgres
クライアントを起動し、\l コマンドを使用して利用可能なデータベースのリストを表示します:
$ sudo -i -u postgres
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=# \q
[email protected]:~$ exit
完了したら、\q コマンドでクライアントを終了し、「exit」と入力して元のユーザーに戻ります。
ユーザーと権限の管理
前述のように、PostgreSQL は、そのサービスに存在するすべてのユーザーがシステムにも存在すると想定しています。新しいユーザーを作成するには、まず adduser を介してシステムに追加します:
$ sudo adduser tutorial
Adding user `tutorial' ...
Adding new group `tutorial' (1000) ...
Adding new user `tutorial' (1000) with group `tutorial' ...
Creating home directory `/home/tutorial' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for tutorial
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
次の例では、名前や電話番号などの他の情報を指定せずに、「tutorial」というユーザーを作成しています。完了すると、PostgreSQL ユーザーを作成できます。最初に postgres ユーザーでログイン:
$ sudo -i -u postgres
$ createuser --interactive
Enter name of role to add: tutorial
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
ユーザーを作成したら、パスワードを設定し、スーパーユーザー postgres でログインして、作成したばかりのユーザーを変更します:
$ psql
postgres=# ALTER USER tutorial PASSWORD 'password'; ALTER ROLE;
コマンドを実行して、新しく作成したユーザーのデータベースを作成することもできます:
$ createdb tutorial
完了したら、ログアウトして、新しく作成したユーザーでログインしてみます:
$ sudo -i -u tutorial
[email protected]:~$ psql
psql (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1))
Type "help" for help.
tutorial=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
tutorial | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
外部クライアントへのアクセスを有効にする
場合によっては、サーバー上の 1 つまたは複数のデータベースへの外部クライアント (たとえば、あなたのマシン) によるアクセスを許可する必要があるかもしれません。通常、PostgreSQL はローカル以外の接続を受け入れるように構成されていないため、いくつかの構成ファイルを変更してください。
最初に変更するファイルは、/etc/postgresql/10/main/postgresql.conf 内のメイン構成ファイルです。
次の行を必ず編集してください:
listen_addresses = 'localhost'
あり:
listen_addresses = '*'
このようにして、PostgreSQL に任意のネットワーク インターフェイスからの着信接続を期待するように通知します。
変更を保存してください。次の行を追加して、/etc/postgresql/10/main/pg_hba.conf 内のサーバー アクセス ルールを管理するファイルの編集に進みます。
host tutorial tutorial 0.0.0.0/0 md5
この変更により、「チュートリアル」ユーザーは任意のホストから自分のデータベースにアクセスできます。特に、示されているフィールドは次のとおりです:
<オール>host:受け入れる接続のタイプ。可能な値は次のとおりです:
- ローカル:システムからの非ネットワーク接続
- ホスト:あらゆるタイプの TCP / IP 接続
- hostssl:SSL プロトコルでのみ TCP / IP 接続
- hostnossl:TCP / IP 接続は SSL プロトコルではありません
チュートリアル:アクセスを許可するデータベースの名前。すべてのデータベースを参照するには「all」を使用します
チュートリアル:アクセスを許可するユーザー名
0.0.0.0/0:IP アドレス。この場合は、任意の IPv4 アドレスへのアクセスを許可しています
md5:受け入れられている認証方法。最も重要なものは次のとおりです:
- md5:パスワード認証
- 信頼:無条件に接続を無条件に受け入れる
- peer:システム ユーザー名を使用して、同じ名前のデータベースにのみ接続します。
詳細については、アドレス https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html または公式の PostgreSQL ドキュメントにアクセスしてください。
終了したら、サービスを再起動してすべての変更を適用します:
$ sudo systemctl restart postgresql