La cause profonde pourrait être que pg15 a modifié les règles de vérification par défaut.
Chemin du fichier de configuration : /etc/postgresql/15/main/pg_hba.conf
Contenu du fichier :
# 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
La commande d’exécution de la sauvegarde est la suivante :
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
La commande ci-dessus génère une erreur en raison de la règle local all postgres peer : Peer authentication failed for user "postgres"
Idée de résolution : Changer peer en trust pour autoriser toutes les commandes en environnement local. Cela signifie qu’aucune vérification ne sera nécessaire pour toutes les commandes (et aucun mot de passe ne sera requis).
Étapes spécifiques :
- Copier
/etc/postgresql/15/main/pg_hba.confdu conteneur vers la machine locale
sudo docker cp discourse_dev:/etc/postgresql/15/main/pg_hba.conf ~/discourse/data/pg_hba.conf
Donner les permissions 644
sudo chmod 644 ~/discourse/data/pg_hba.conf
Modifier la configuration dans data/pg_hba.conf
# Database administrative login by Unix domain socket
local all postgres trust
- Modifier le fichier
d/boot_devpour monterdata/pg_hba.confdans le conteneur, écrasant le fichier de configuration par défaut depg.
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" \
# La ligne ci-dessous est ajoutée, elle monte le fichier de configuration dans le conteneur, et donne uniquement des droits de lecture au conteneur
-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
- Arrêter et supprimer le conteneur actuel, puis reconstruire le nouveau conteneur
d/shotdown_dev
d/boot_dev
- Après la reconstruction, démarrer les applications front-end et back-end, et tester si la sauvegarde fonctionne correctement
d/rails s
# Exécuter dans une autre invite de commande
d/ember-cli
Dans la page de sauvegarde, cliquez sur Sauvegarder, attendez quelques secondes, puis vérifiez la liste des fichiers de sauvegarde.


