sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres-databasen, der kører i docker, bliver ved med at hænge

Dette sker på grund af en uoverensstemmelse mellem brugertilladelser i docker-beholderen.

Visning af de relevante filer i containeren:

$ docker exec <container> ls -l /var/lib/postgresql/data/pg_stat_tmp
-rw------- 1 root     root     [...] db_0.stat
-rw------- 1 root     root     [...] db_1.stat
-rw------- 1 root     root     [...] db_2.stat
-rw------- 1 postgres postgres [...] global.stat

vi kan se, at alle db_*.stat filer ejes af root:root , mens global.stat er ejet af postgres:postgres .

Ved at tjekke docker-brugeren får vi:

$ docker exec <container> whoami
root

Så vi vil gerne have, at alle disse filer ejes af postgres-brugeren. Heldigvis er dette ret nemt! Indstil blot brugeren til postgres , og genstart!

I en dockerfil:

USER postgres

Brug af docker-compose:

services:
  postgres:
    image: postgres:13
    user: postgres


  1. MySQL:#126 - Forkert nøglefil til tabel

  2. Problemer med at vælge den korrekte række fra en anden tabel

  3. Slet alle fremmednøgler i databasen (MySql)

  4. Kan jeg fortryde en transaktion, jeg allerede har begået? (tab af data)