PostgreSQL 13.2 のインストール

https://computingforgeeks.com/how-to-install-postgresql-13-on-ubuntu/ を見ながらPostgreSQLをインストールする。

$ sudo apt -y install vim bash-completion wget
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/postgres.list
$ sudo apt update
$ sudo apt install postgresql-13 postgresql-client-13

$ systemctl is-enabled postgresql
enabled

$ systemctl status postgresql.service 
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2021-03-19 13:32:58 JST; 1min 58s ago
   Main PID: 384999 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 76997)
     Memory: 0B
     CGroup: /system.slice/postgresql.service

Mar 19 13:32:58 sirius systemd[1]: Starting PostgreSQL RDBMS...
Mar 19 13:32:58 sirius systemd[1]: Finished PostgreSQL RDBMS.

$ systemctl status postgresql@13-main.service 
● postgresql@13-main.service - PostgreSQL Cluster 13-main
     Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; vendor preset: enable>
     Active: active (running) since Fri 2021-03-19 13:33:02 JST; 2min 10s ago
   Main PID: 385311 (postgres)
      Tasks: 7 (limit: 76997)
     Memory: 21.4M
     CGroup: /system.slice/system-postgresql.slice/postgresql@13-main.service
             ├─385311 /usr/lib/postgresql/13/bin/postgres -D /var/lib/postgresql/13/main -c config_f>
             ├─385313 postgres: 13/main: checkpointer
             ├─385314 postgres: 13/main: background writer
             ├─385315 postgres: 13/main: walwriter
             ├─385316 postgres: 13/main: autovacuum launcher
             ├─385317 postgres: 13/main: stats collector
             └─385318 postgres: 13/main: logical replication launcher

Mar 19 13:33:00 sirius systemd[1]: Starting PostgreSQL Cluster 13-main...
Mar 19 13:33:02 sirius systemd[1]: Started PostgreSQL Cluster 13-main.

DB superuser のパスワード設定

$ sudo su - postgres
$ psql -c "alter user postgres with password 'XXXXXX'"

pgtune

PCの構成、使用メモリ数、最大接続数を書くと postgresql.conf のチューニング設定を計算してくれるサイト。

(オプション) Peer認証の無効化

デフォルトではローカルマシンから作業する際にOSのユーザ名と一致しないと怒られるので、その制限を変える。

# diff -Naru0 pg_hba.conf.orig pg_hba.conf
--- pg_hba.conf.orig    2021-03-19 13:32:59.335426985 +0900
+++ pg_hba.conf 2021-03-19 14:21:33.233348940 +0900
@@ -94 +94 @@
-local   all             all                                     peer
+local   all             all                                     md5
@@ -101 +101 @@
-local   replication     all                                     peer
+local   replication     all                                     md5

ここには書かないが、他にもアクセス元のIPアドレスをいくつか許可する設定を行った。

再起動

  • service postgresql restart

DBユーザとDBの作成

Webサービスを追加するたびに大体同じ作業を行う。

NEWUSER=test1user
NEWDB=test1db
NEWLOCALE=C
$ sudo su - postgres -c "createuser -P $NEWUSER"
## (パスワードを尋ねられる)
$ sudo su - postgres -c "createdb --template=template0 --encoding=UTF-8 --locale=$NEWLOCALE --owner=$NEWUSER $NEWDB"
$ sudo su - postgres -c psql
psql (13.2 (Ubuntu 13.2-1.pgdg20.04+1))
Type "help" for help.

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 test1user |                                                            | {}

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
 test1db   | test1user | UTF8     | C           | C           |

postgres=# \q
(終了)

動作確認

$ psql -U $NEWUSER $NEWDB
(パスワードを尋ねられる)
@tateisu
mod
creator
11M

pg_stat_statements のインストール

pg_stat_statements.so の存在確認。

$ ls -ld /usr/lib/postgresql/13/lib/pg_stat_statements.so
-rw-r--r-- 1 root root 47336 Feb 11 01:33 /usr/lib/postgresql/13/lib/pg_stat_statements.so

postgresql.confに追記。

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top
pg_stat_statements.save = on

他の行でshared_preload_libraries を設定していないか確認すること。

⌚ガジェット
!gadgets

    ガジェット関連の記事を収集します

    • 0 users online
    • 1 user / day
    • 1 user / week
    • 1 user / month
    • 1 user / 6 months
    • 3 subscribers
    • 16 Posts
    • 13 Comments
    • Modlog