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

je prépare mon PostgreSQL 9.1. Je ne peux rien faire avec PostgreSQL: ne peut pas createdb , ne peut pas createuser ; toutes les opérations retourner le message d'erreur

Fatal: role h9uest does not exist

h9uest est mon nom de Compte, et I sudo apt-get install PostgreSQL 9.1 sous ce compte.

Une erreur similaire persiste pour le compte root .

519
demandé sur Erwin Brandstetter 2012-08-12 07:00:44

11 réponses

utilisez le utilisateur du système d'exploitation postgres pour créer votre base de données - aussi longtemps que vous n'avez pas mis en place un base de données rôle avec les privilèges nécessaires qui correspond à votre utilisateur du système d'exploitation du même nom ( h9uest dans votre cas):

sudo -u postgres -i

comme recommandé ici ou ici .

alors réessayez. Type exit lorsqu'il est utilisé en tant qu'utilisateur du système postgres .

Ou exécuter la commande unique createuser comme postgres avec sudo , comme démontré par la drees dans une autre réponse.

le point est d'utiliser l'utilisateur du système d'exploitation correspondant au rôle de la base de données du même nom pour obtenir l'accès via ident authentification . postgres est l'utilisateur du système d'exploitation par défaut pour avoir initialisé le cluster de base de données. Le manuel:

afin de bootstrap le système de base de données, un fraîchement initialisé système contient toujours un rôle prédéfini. Ce rôle est toujours un "superuser", et par défaut (sauf si modifié lors de l'exécution de initdb ) il aura le même nom que l'utilisateur du système d'exploitation qui a initialisé la base de données cluster. Habituellement, ce rôle sera appelé postgres . Pour créer plus de rôles, vous devez d'abord vous connecter comme ceci rôle initial.

j'ai entendu parler de configurations impaires avec des noms d'utilisateur non standard ou où l'utilisateur du système d'exploitation n'existe pas. Vous devez adapter votre stratégie.

Lire sur rôles de base de données et "1519330920 authentification du client" dans le manuel.

598
répondu Erwin Brandstetter 2018-06-07 00:08:43

après avoir essayé de nombreuses autres solutions, et sans succès, cette réponse m'a finalement aidé.

https://stackoverflow.com/a/16974197/2433309

en bref, en cours d'exécution

sudo -u postgres createuser owning_user

crée un rôle avec le nom owning_user (dans ce cas, h9uest). Après cela, vous pouvez lancer rake db:create à partir du terminal sous n'importe quel nom de compte que vous avez mis en place sans avoir à entrer dans les postgres environnement.

228
répondu drees 2017-05-23 12:18:23
sudo su - postgres

psql template1

la création de rôle sur pgsql avec privilège "superuser"

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

puis créer utilisateur

CREATE USER username; 
eg. CREATE USER demo;

attribuer un privilège à l'utilisateur

GRANT ROOT TO username;

et ensuite activer la connexion de cet utilisateur, de sorte que vous pouvez exécuter par exemple: psql template1 , de la normale $ terminal:

ALTER ROLE username WITH LOGIN;
102
répondu Mohammed Saleem 2016-08-09 17:02:12

installer postgres en utilisant apt-get ne crée pas un rôle d'utilisateur ou une base de données.

pour créer un rôle de super-utilisateur et une base de données pour votre compte d'utilisateur personnel:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)

66
répondu Miles Erickson 2016-07-18 19:01:27

ça marche pour moi:

psql -h localhost -U postgres
53
répondu mateusz.szymborski 2014-12-19 18:12:29

méthode de travail,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer ici, remplacer Pair par fiducie "1519110920
  3. redémarrage sudo service postgresql restart

  4. essayez maintenant, psql -U postgres

8
répondu Mohideen ibn Mohammed 2017-09-10 16:23:48

dans l'invite de l'utilisateur local, pas l'invite de l'utilisateur root, tapez

sudo -u postgres createuser <local username>

puis entrer le mot de passe pour l'utilisateur local.

, Puis saisissez la commande précédente qui a généré "rôle" nom d'utilisateur " n'existe pas."

les étapes ci-dessus ont résolu le problème pour moi. Dans la négative, veuillez envoyer des messages de terminal pour les étapes ci-dessus.

4
répondu Robert Cambil 2015-08-24 18:10:15

Je l'ai installé sur macOS et j'ai dû:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

Voici la source: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

3
répondu Henry 2018-04-29 02:15:58

suivez ces étapes et il fonctionnera pour vous:

  1. exécuter msfconsole
  2. type db_console
  3. certaines informations vous seront montrées choisir l'information qui vous dit de faire: db_connect user:pass@host:port.../database désolé Je ne m'en souviens pas mais c'est comme celui-ci puis remplacer l'utilisateur et le mot de passe et l'hôte et la base de données avec les informations incluses dans le database.yml dans le emplacement: /usr/share/metasploit-framework/config
  4. , vous verrez. reconstruire le cache modèle en arrière-plan.
  5. Tapez apt-get update && apt-get upgrade après la mise à jour redémarrez le terminal et le menu msfconsole et il fonctionne vous pouvez vérifier qu'en tapant msfconsole: msf>db_status vous verrez qu'il est connecté.
1
répondu Loli Pronoms 2017-08-17 14:07:35

initialiser Manuellement le démarreur DB résolu, dans mon cas.

l'Exécution initdb a fait le tour pour moi.

pour une raison quelconque, quand j'ai installé postgres, le" DB initial " n'a pas été créé.

pour résoudre le problème, c'est la solution prévue pour le wiki postgreSQL - premiers pas .

initdb

typiquement, l'installation de postgres sur votre système d'exploitation crée une" DB initiale " et démarre l'exécution du démon du serveur postgres. Si ce n'est pas le cas, vous devrez exécuter initdb

0
répondu Natacha 2018-08-28 19:53:31

désinstaller tout et garder Postgres.app:

brew cask uninstall postgres
brew uninstall postgres
brew cask install postgres
rm -rf /Applications/Postgres93.app/
# shutdown any postgres instance
# open postgres.app -> "Initialize"

je voulais PostgreSQL 9.6

-2
répondu Dorian 2017-07-05 14:36:32