Die Grundursache könnte darin liegen, dass pg15 die Standard-Authentifizierungsregeln geändert hat.
Konfigurationsdateipfad: /etc/postgresql/15/main/pg_hba.conf
Inhalt der Datei:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::/0 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
Der Befehl, der für das Backup ausgeführt wurde:
pg_dump --schema=public -T public.pg_* --file=‘/src/tmp/backups/default/2026-02-02-063003/dump.sql.gz’ --no-owner --no-privileges --verbose --compress=4 --username=postgres discourse_development
Aufgrund der Regel local all postgres peer schlägt der obige Befehl mit dem Fehler fehl: Peer authentication failed for user "postgres"
Lösungsansatz: Ändern Sie peer in trust, um alle Befehle in der lokalen Umgebung zuzulassen. Das bedeutet, dass für alle Befehle keine Authentifizierung mehr erforderlich ist (und auch kein Passwort eingegeben werden muss).
Konkrete Schritte:
- Kopieren Sie
/etc/postgresql/15/main/pg_hba.confaus dem Container auf Ihren lokalen Rechner
sudo docker cp discourse_dev:/etc/postgresql/15/main/pg_hba.conf ~/discourse/data/pg_hba.conf
Berechtigungen auf 644 setzen
sudo chmod 644 ~/discourse/data/pg_hba.conf
Konfiguration in data/pg_hba.conf ändern
# Database administrative login by Unix domain socket
local all postgres trust
- Ändern Sie die Datei
d/boot_dev, umdata/pg_hba.confin den Container einzubinden und so die Standardkonfigurationsdatei vonpgzu überschreiben.
docker run -d \
-p $local_publish:8025:8025 \
-p $local_publish:3000:3000 \
-p $local_publish:4200:4200 \
-p $local_publish:9292:9292 \
-p $local_publish:9405:9405 \
-v "$DATA_DIR:/shared/postgres_data:delegated" \
# Die folgende Zeile ist neu, sie bindet die Konfigurationsdatei in den Container ein und gibt dem Container nur Lesezugriff
-v "$SOURCE_DIR/data/pg_hba.conf:/etc/postgresql/15/main/pg_hba.conf:ro" \
-v "$SOURCE_DIR:/src:delegated" \
-e UNICORN_BIND_ALL=true \
$mount_plugin_symlinks \
$ENV_ARGS \
--hostname=discourse \
--name=discourse_dev \
--restart=always \
discourse/discourse_dev:release /sbin/boot
- Stoppen und löschen Sie den aktuellen Container und erstellen Sie dann den neuen Container neu
d/shotdown_dev
d/boot_dev
- Nach der Neuerstellung starten Sie die Frontend- und Backend-Anwendungen und testen Sie, ob das Backup normal funktioniert
d/rails s
# In einem anderen Terminal ausführen
d/ember-cli
Klicken Sie auf der Backup-Seite auf Sichern, warten Sie einige Sekunden und überprüfen Sie dann die Liste der Sicherungsdateien.


