UbuntuにPostgresqlをインストール、ユーザー登録まで

# 目的
UbuntuでPostgresqlサーバーをインストールし、任意のユーザにてアクセス可能とするまでの手順を記述します。


# 環境
|項目|内容|
|---|---|
|ホストOS|Windows11pro|
|VM|VMware workstation 16 Player|
|ゲストOS|Ubuntu22.04|
|postgresql|ver14|

# 1. 必要なaptパッケージのインストール

``` sh
sudo apt update
sudo apt dist-upgrade -y
sudo apt autoremove -y
```

``` sh
sudo apt install curl finger net-tools postgresql postgresql-client vim
```

## 便利なツール

[PostgreSQL管理用ツール　pgAdmin4](https://www.pgadmin.org/download/pgadmin-4-apt/)

``` sh
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo apt install pgadmin4-desktop
```

# 2. OSユーザーの登録
OSのユーザーとpostgresqlでのユーザーがあり、混乱の原因となります。

PostgreSQLをインストールすると、OS上にpostgresというユーザーが自動的に作成されます。

``` sh
finger postgres
```

```sh
Login: postgres       			Name: PostgreSQL administrator
Directory: /var/lib/postgresql      	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
```

このOSユーザーにパスワードの設定が必要です。
任意のパスワードを設定します。
``` sh
passwd postgres
新しい パスワード: 
新しい パスワードを再入力してください: 
passwd: パスワードは正しく更新されました
```

# 3.DBユーザーの登録

OSユーザーでPostgreSQLにログインします。
``` sh
root@pc_name# su - postgres
postgres@pc_name$ psql
Password for user postgres: 
psql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1))
Type "help" for help.

postgres=# 
```

DBユーザーpostgresがデフォルトで作成されているので、このユーザーにパスワードを設定します。
``` sh
postgres=# ALTER USER postgres with encrypted password '任意のパスワード';
ALTER ROLE
```

# 4.peer接続の解除
PostgreSQLはデフォルトでは、peer接続の設定になっています。
OSユーザーとDBユーザーが同じ場合、パスワード認証が省略される設定ですが、コマンドライン以外からのアクセスでは拒否されてしまいます。

以下のファイルを編集します。
``` sh
vim /etc/postgresql/14/main/pg_hba.conf

...
# Database administrative login by Unix domain socket
local   all             postgres                                md5
...
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
...

```

# 5.PostgreSQL再起動
設定を反映させるためにサービスを再起動します。

```sh
root# /etc/init.d/postgresql restart
Restarting postgresql (via systemctl): postgresql.service.
```

# 6.アクセスの確認
OSのrootユーザーとしてDBユーザーpostgresでのアクセスを確認します。

``` sh
root@pc_name# psql -U postgres
Password for user postgres: DBユーザーのパスワード
psql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1))
Type "help" for help.

postgres=#select * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig 
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres |       10 | t           | t        | t       | t            | ******** |          | 
(1 row)
```

# 7.pgAdmin4でのアクセス

pgAdminをインストールした場合、GUIで確認ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/fd4e9bf9-7bdc-b640-2a6e-bbdfd5efa0ae.png)

起動後画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/5e842381-fa56-b312-280a-34abd18ad2d1.png)

Object ExplorerでSeversを右クリックし、[Register]-[Server...]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/a851084c-fee4-40ee-fcbd-40bbaec6c7b8.png)

Register-Serverダイアログ
Generalタブで、Nameに識別しやすい名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/3d5c3ff5-c9d7-bcab-e4e5-ddcb3b8bb63e.png)

Connectionタブで、以下の項目を入力
- Host nem/address
- Password(DBユーザーのパスワード)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/88251d7e-9f73-590d-285a-6cfd942f5aa7.png)

Saveを押して成功すると、以下の画面のように情報が見えるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542103/e285bf05-14fd-8304-27f7-0ebb838c4353.png)

Tableなどを作成した場合、ツリー上のSchemas以下に表示され、この中からTablesに作成したTableが表示されるようになります。右クリックメニュー[View/Edit Data]-[All Rows]を選ぶと、テーブル内のデータが表示されるようになります。