web-dev-qa-db-fra.com

psql: FATAL: le rôle "postgres" n'existe pas

Exécution du serveur PostgreSQL sur Void Linux. Après l'installation, exécutez initdb en tant qu'utilisateur du système d'exploitation 'postgres':

[user@Host]$ Sudo -u postgres -i

$ initdb -D '/var/lib/postgresql/data'

Sortie reçue:

création de répertoire/var/lib/postgresql/data ... ok création de sous-répertoires ... ok sélection par défaut max_connections ... 100 sélection par défaut shared_buffers ... 128MB sélection de l'implémentation dynamique de mémoire partagée ... posix création de fichiers de configuration ... ok exécution de bootstrap ... ok exécution de l'initialisation post-bootstrap ... paramètres régionaux: impossible de définir LC_MESSAGES sur les paramètres régionaux par défaut: aucun fichier ou répertoire de ce type ne synchronise les données sur le disque ... ok

AVERTISSEMENT: activation de l'authentification "de confiance" pour les connexions locales Vous pouvez changer cela en modifiant pg_hba.conf ou en utilisant l'option -A, ou --auth-local et --auth-Host, la prochaine fois que vous exécuterez initdb.

Succès. Vous pouvez maintenant démarrer le serveur de base de données en utilisant: pg_ctl -D/var/lib/postgresql/data -l logfile start

J'ai ensuite procédé à la création du service, j'accorde la propriété à 'postgres' et je le démarre:

[user@Host]$ ln -s /etc/sv/postgresql /var/service
[user@Host]$ Sudo chown postgres: /var/service/postgresql
[user@Host]$ Sudo sv start postgresql
[user@Host]$ ls -l /var/service/postgresql
lrwxrwxrwx 1 postgres postgres 18 nov   2 17:05 /var/service/postgresql -> /etc/sv/postgresql

Fonctionnement:

[user@Host]$ Sudo -u postgres psql ...

me donnera l'erreur suivante:

psql: FATAL:  role "postgres" does not exist

J'ai essayé d'accorder la propriété de /etc/sv/postgresql à "postgres", mais pas de chance.

Ce sont mes sources:

https://wiki.voidlinux.eu/PostgreSQL

Erreur PostgreSQL: Fatal: le rôle "nom d'utilisateur" n'existe pas

Je ne sais pas quoi faire ensuite.

EDIT: tombé sur psql: FATAL: le rôle "postgres" n'existe pas . Ne peut pas courir psql -l car j'obtiens la même erreur, quel que soit l'utilisateur avec lequel j'exécute psql.

4
Jakov

Pas une réponse complète, mais considérez le manuel sur initdb ici :

-Uusername
--username=username

Sélectionne le nom d'utilisateur du superutilisateur de la base de données. Il s'agit par défaut du nom de l'utilisateur effectif exécutant initdb. Le nom du superutilisateur n'est vraiment pas important, mais on peut choisir de conserver le nom habituel postgres, même si le nom de l'utilisateur du système d'exploitation est différent.

Sens ...

  1. Lorsque vous exécutez initdb en tant qu'utilisateur du système d'exploitation postgres, le rôle de superutilisateur DB initial est également postgres - dans PostgreSQL standard. J'ai entendu parler de systèmes qui plient cette règle ...

  2. Vous devriez pouvoir forcer le nom postgres avec --username=postgres pour le superutilisateur initial - sauf si votre paquet a sérieusement gâché tout cela.

4