web-dev-qa-db-fra.com

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

Je suis en train de configurer mon PostgreSQL 9.1. Je ne peux rien faire avec PostgreSQL: ne peut pas createdb, ne peut pas createuser; toutes les opérations renvoient le message d'erreur

Fatal: role h9uest does not exist

h9uest est le nom de mon compte et Sudo apt-get install PostgreSQL 9.1 sous ce compte.
Une erreur similaire persiste pour le compte root.

549
h9uest

Utilisez le utilisateur du système d'exploitation _ postgres pour créer votre base de données - tant que vous n'avez pas configuré de rôle base de données avec les privilèges nécessaires correspondant à l'utilisateur de votre système d'exploitation portant le même nom (h9uest dans votre cas):

Sudo -u postgres -i

Comme recommandé ici ou ici .

Puis réessaye. Tapez exit lorsque vous avez terminé avec l'utilisateur système postgres.

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

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

Pour amorcer le système de base de données, un fichier Fraîchement initialisé. Le système contient toujours un rôle prédéfini. Ce rôle est toujours un “Superutilisateur”, et par défaut (à moins d'être 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é le cluster de base de données. Habituellement, ce rôle s'appellera postgres. Pour créer plus de rôles, vous devez d’abord vous connecter en tant que ceci rôle initial.

J'ai entendu parler de configurations étranges avec des noms d'utilisateur non standard ou lorsque l'utilisateur du système d'exploitation n'existe pas. Vous devrez adapter votre stratégie à cet endroit.

Lisez à propos de rôles de base de données et authentification client dans le manuel.

636
Erwin Brandstetter

Après avoir essayé beaucoup de solutions d'autres personnes, et sans succès, cette réponse m'a finalement aidé. 

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

En bref, courir

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 exécuter rake db:create à partir du terminal sous le nom de compte que vous avez configuré sans avoir à entrer dans l'environnement postgres.

245
drees
Sudo su - postgres

psql template1

créer un rôle sur pgsql avec le privilège de "superutilisateur"

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

Puis créer un utilisateur 

CREATE USER username; 
eg. CREATE USER demo;

Attribuer des privilèges à l'utilisateur

GRANT ROOT TO username;

Et puis activez la connexion de cet utilisateur, de sorte que vous puissiez exécuter par exemple: psql template1, à partir du terminal $ normal:

ALTER ROLE username WITH LOGIN;
107
Mohammed Saleem

Cela fonctionne pour moi:

psql -h localhost -U postgres
62
mateusz.szymborski

Méthode de travail,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peerici changer peer en trust
  3. redémarrer, Sudo service postgresql restart

  4. maintenant essayer, psql -U postgres

8

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

Sudo -u postgres createuser <local username>

Puis entrez le mot de passe pour l'utilisateur local.

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

Les étapes ci-dessus ont résolu le problème pour moi . Sinon, veuillez envoyer des messages au terminal pour les étapes ci-dessus.

5
Robert Cambil

Je l'ai installé sur macOS et je devais:

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

5
Henry

Pour la version Postgres 9.5 utilisez la commande suivante:

psql -h localhost -U postgres

J'espère que cela aidera.

2
Kalyan Halder Raaz

La création manuelle d'un cluster de base de données l'a résolu dans mon cas.

Pour une raison quelconque, lorsque j'ai installé postgres, la "base de données initiale" n'a pas été créée. Exécuter initdb a fait le tour pour moi.

Cette solution est fournie dans le Wiki PostgreSQL - Premières étapes :

initdb

Généralement, l’installation de postgres sur votre système d’exploitation crée une "base de données initiale" et lance le démon du serveur postgres. Sinon, vous aurez besoin de lancer initdb

1
Natacha

Suivez ces étapes et cela fonctionnera pour vous:

  1. exécuter msfconsole
  2. tapez db_console 
  3. certaines informations vous seront montrées choisi les informations qui vous disent de faire: db_connect user:pass@Host:port.../database désolé je ne m'en souviens pas mais c'est comme celui-ci puis remplacez l'utilisateur et le mot de passe et l'hôte et la base de données par les informations incluses dans le database.yml l'emplacement: /usr/share/metasploit-framework/config 
  4. tu verras. reconstruire le cache de modèle en arrière-plan. 
  5. Tapez apt-get update && apt-get upgrade après la mise à jour, redémarrez le terminal et lancez msfconsole. Cela fonctionne, vous pouvez vérifier qu'en tapant msfconsole: msf>db_status, vous verrez qu'il est connecté.
1
Loli Pronoms

vider et restaurer avec les drapeaux --no-owner --no-privileges

par exemple.

dump - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

restaurer - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

0
srghma

Pour Windows utilisateurs: psql -U postgres

Vous devriez voir alors l'interface de ligne de commande pour PostgreSQL: postgres=#

0
Andriy Tolstoy
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
0
Abel