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
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 …
-
Lors de lexécution de
initdb
en tant quutilisateur du système dexploitationpostgres
, le rôle de superutilisateur DB initial est égalementpostgres
– dans Postgres standard. Jai entendu parler de systèmes qui contournent cette règle … -
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 couruinitdb -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 …
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.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).session_replication_role = 'origin'
. Cela ne sert à rien, je pense.:%s/XPBS/XBPS/g