Exécution du serveur PostgreSQL sur Void Linux. Après linstallation, a exécuté initdb en tant quutilisateur du système dexploitation « postgres »:

[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data" 

Sortie reçue:

création du 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 … 128 Mo sélection dynamique partagée implémentation de la mémoire … posix création de fichiers de configuration … ok exécution du script bootstrap … ok exécution de linitialisation post-bootstrap … locale: impossible de définir LC_MESSAGES sur les paramètres régionaux par défaut: aucun fichier ou répertoire de ce type ok synchronisation des données sur le disque … ok

AVERTISSEMENT: activation de lauthentification « trust » pour les connexions locales Vous pouvez changer cela en éditant pg_hba.conf ou en utilisant loption -A, ou –auth-local et –auth-host, la prochaine fois vous exécutez 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 début du fichier journal

Jai ensuite créé le service, accordé la propriété à « postgres » et le démarrer:

[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 

Exécution:

[user@host]$ sudo -u postgres psql ... 

me donnera lerreur suivante:

psql: FATAL: role "postgres" does not exist 

Jai essayé daccorder la propriété de /etc/sv/postgresql à « postgres », mais pas de chance.

Voici mes sources:

https://wiki.voidlinux.eu/PostgreSQL

Erreur PostgreSQL: fatale: le rôle « username » nexiste pas

Je ne sais pas quoi faire ensuite.

EDIT: Je suis tombé sur psql: FATAL: le rôle « postgres » ne fonctionne pas existent . Impossible dexécuter psql -l car jobtiens la même erreur, quel que soit lutilisateur que jutilise psql en tant que.

Commentaires

  • Dites-nous quelle version de Postgres vous essayez dinstaller et où vous avez obtenu le paquet. Le message derreur est suffisamment clair: role "postgres" does not exist: il ny a pas de rôle de base de données nommé " postgres ". Est-ce la seule installation Postgres sur la même machine? (Vous êtes donc sûr de vous connecter à la bonne instance?) Si cest le cas, la question est: quel rôle de base de données est configuré par votre installation. Je ne connais ' que Void Linux ou le gestionnaire de paquets XPBS pour en dire plus. Peut-être mieux adapté pour superuser.SE ou unix.SE.
  • La version est postgresql-9.6.10_1. Oui, cest ' la seule installation de PostgreSQL sur mon système et il ny a quune seule instance du serveur en cours dexécution. Dois-je alors proposer la question? Je ne ' ne sais pas …
  • Je ne suis pas sûr quil y ait des experts VOID Linux ou XPBS ici … La clé est de trouver le nom du Rôle Postgres créé par initdb, puis connectez-vous avec lutilisateur du système dexploitation du même nom pour obtenir laccès par la confiance " " méthode dauthentification. Évidemment pas " postgres " (ce qui serait le bon choix par défaut).
  • Jen ai pensé autant, mais je ' n’a pas réussi à trouver le rôle. Comme je lai mentionné dans la question, je peux ' t psql du tout, donc je peux ' t lister les rôles existants. Y a-t-il quelque chose de pertinent écrit dans le fichier postgresql.conf peut-être? Quelque chose que je devrais rechercher? Jai ' jai greped le rôle et jai session_replication_role = 'origin'. Cela ne sert à rien, je pense.
  • :%s/XPBS/XBPS/g

Réponse

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

-U username
--username= username

Sélectionne le nom dutilisateur du superutilisateur de la base de données. Par défaut, il sagit du nom de lutilisateur effectif exécutant initdb. Le nom du super-utilisateur n’est vraiment pas important, mais on peut choisir de conserver le nom usuel postgres, même si le nom de l’utilisateur du système d’exploitation est différent.

Signification …

  1. Lors de lexécution de initdb en tant quutilisateur du système dexploitation postgres, le rôle de superutilisateur DB initial est également postgres – dans Postgres standard. Jai entendu parler de systèmes qui contournent cette règle …

  2. Vous devriez pouvoir forcer le nom postgres avec --username=postgres pour le super-utilisateur initial – à moins que votre paquet nait sérieusement dérangé tout cela.

Commentaires

  • Wow , cela ma orienté dans la bonne direction, daccord. Je savais que javais vu ce drapeau -U quelque part et cétait dici: stackoverflow.com/questions/50746147/… Jai peut-être mal lu la réponse de Laurenz ', mais jai couru initdb -U UTF8 -D /var/lib/postgresql/data et devinez quoi le rôle initial de superutilisateur DB était. Quoi quil en soit, jai failli planter tout mon système à cause de lépuisement. Une journée assez productive. Merci pour votre dévouement Erwin, votre aide est très appréciée.
  • @Jakov: -U UTF8. Aie. Était censé être -E UTF8 je suppose? Désolé pour votre journée perdue à cause dune lettre brouillée sournoise. Encore une fois: si vous aviez montré votre commande réelle dans la question pour commencer, nous aurions peut-être économisé la moitié de votre journée …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *