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.
$ sudo su - postgres
$ psql -c "alter user postgres with password 'XXXXXX'"
PCの構成、使用メモリ数、最大接続数を書くと postgresql.conf のチューニング設定を計算してくれるサイト。
デフォルトではローカルマシンから作業する際に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
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
(パスワードを尋ねられる)
pg_stat_statements のインストール
pg_stat_statements.so の存在確認。
postgresql.confに追記。
他の行でshared_preload_libraries を設定していないか確認すること。