web-dev-qa-db-fra.com

le rôle fatal de psql n'existe pas

J'ai récemment la dernière version d'ubuntu et je n'y suis pas encore habitué. J'ai eu plusieurs problèmes de connexion postgresql avec pgadmin3.

J'ai essayé de suivre plusieurs tutoriels pour créer un serveur localhost que je peux utiliser dans pgadmin3. Je n'ai pas vraiment atteint mon objectif et je pense que j'ai aggravé la situation en installant, en désinstallant, en installant, en désinstallant, en essayant les réponses trouvées ... À ce stade, je ne suis pas sûr que mon postgres soit propre. Il est possible que deux postgres soient installés. Encore une fois, je ne suis pas sûr. J'ai essayé de le désinstaller, mais j'ai eu une erreur qui disait que postgres n'était pas dans Sudo.

Le problème, c’est que cette erreur liée à l’exécution de psql s’exécute dans la console:

$psql
psql: FATAL: role "user" does not exist 

Je ne trouve pas le pg_hba.conf et, à ce stade, j'ai trop peur d'aggraver la situation en essayant de suivre d'autres publications. 

Comment pourrais-je faire ce travail?

18
whiplash

Comme indiqué dans les commentaires, votre fichier pg_hba.conf semble correct.

Habituellement, la base de données s’exécutera en tant qu’utilisateur postgres (cochez ps aux | grep postgres pour connaître le nom d’utilisateur sous lequel postgres est en cours d’exécution).

Connectez-vous en tant qu'utilisateur, par exemple Sudo su - postgres, puis créez un utilisateur correspondant à votre compte d'utilisateur Ubuntu normal (createuser username), puis créez une base de données portant le même nom et définissez le propriétaire (-O) sur cet utilisateur, comme suit: createdb -O username username). .

Cela devrait permettre à l'appel psql de fonctionner et que pgadmin - aussi longtemps que vous le démarrez en tant qu'utilisateur par défaut, nom d'utilisateur - devrait également fonctionner.

Edit: Par défaut, psql utilisera votre nom d'utilisateur Linux comme valeur par défaut pour le nom de la base de données et le nom de la base de données. Vous pouvez remplacer le nom d'utilisateur à l'aide de -U someotherusername et vous connecter à une autre base de données en ajoutant ce nom de base de données à la ligne de commande, tel que psql someotherdbname. Vous pouvez également trouver psql -l utile pour répertorier les bases de données existantes.

42
niko
Sudo -u postgres createuser user

peut vous aider à créer un nouvel utilisateur avec tous les privilèges de postgres

8
watsy0007

Utilisez l'utilisateur postgres:

Sudo su postgres

puis utilisez psql.

Si vous rencontrez toujours des problèmes, vérifiez ce lien: Erreur PostgreSQL: Fatal: le rôle "nom d'utilisateur" n'existe pas

2
Amr Arafat

Dans Windows 10 cela fonctionne pour bien

pg_restore --format = c --verbose --no-owner --no-privilèges --dbname = MYDB --username = postgres --no-password --jobs = 8 F: /MYBK.backup 

--username = (rôle) et --no-password sont des nécéssaires

0
Giordhano