web-dev-qa-db-fra.com

Créateur: impossible de se connecter à la base de données postgres: FATAL: le rôle "tom" n'existe pas

J'essaie de configurer Postgres pour la première fois et je dois créer un utilisateur disposant des autorisations nécessaires pour lire et créer des bases de données. Cependant, lorsque j'utilise "createuser username" sur mon terminal, le message suivant s'affiche: 

createuser: impossible de se connecter à la base de données postgres: FATAL: le rôle "tom" n'existe pas

Tom est mon compte utilisateur Ubuntu auquel je suis actuellement connecté. J'essaie de créer un nom d'utilisateur "postgres", puis de "psql -U psql template1" pour pouvoir créer une base de données et lui attribuer un propriétaire pour mon application Rails. 

De l'aide?

63
Tom Maxwell

Vous avez mentionné Ubuntu, alors je suppose que vous avez installé les paquets PostgreSQL d’Ubuntu via apt.

Si tel est le cas, le compte utilisateur postgres de PostgreSQL existe déjà et il est configuré pour être accessible via l'authentification peer pour les sockets unix dans pg_hba.conf. Vous y arrivez en lançant des commandes en tant qu'utilisateur postgres unix, par exemple:

Sudo -u postgres createuser owning_user
Sudo -u postgres createdb -O owning_user dbname

Tout cela se trouve dans la documentation Ubuntu PostgreSQL qui constitue le premier hit de Google pour "Ubuntu PostgreSQL" et est traitée dans de nombreuses questions Stack Overflow.

(Vous avez beaucoup plus de mal à répondre à cette question en omettant des détails tels que le système d'exploitation et la version sur laquelle vous êtes, comment vous avez installé PostgreSQL, etc.)

106
Craig Ringer

Voir git Gist avec les instructions ici

Lance ça: 

 Sudo -u postgres psql

OR

psql -U postgres

dans votre terminal pour entrer dans postgres

postgres=#

Courir 

CREATE USER new_username;

Remarque: remplacez new_username par l'utilisateur que vous souhaitez créer, dans votre cas, ce sera tom.

postgres=# CREATE USER new_username;
CREATE ROLE

Puisque vous voulez que cet utilisateur puisse créer une base de données, vous devez modifier le rôle en superutilisateur.

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

Pour confirmer, tout était réussi, 

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

Mise à jour/Modification:

J'ai récemment rencontré une erreur similaire sur mon Mac: 

psql: FATAL: role "postgres" does not exist

En effet, mon installation a été configurée avec un superutilisateur de base de données dont le nom de rôle est identique à votre nom de connexion (nom abrégé).

Mais certains scripts Linux supposent que le superutilisateur a le nom de rôle traditionnel postgres

Comment ai-je résolu ce problème?

Si vous avez installé avec homebrew, lancez:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

OU: 

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

Si vous avez installé avec postgres.app pour Mac, exécutez:

/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

P.S: remplacez 10.5 par votre version de PostgreSQL

36
user3402754
Sudo -u postgres createuser -s tom 

cela devrait vous aider car cela se produira si l'administrateur n'a pas créé de compte utilisateur PostgreSQL pour vous. Il se peut également que vous ayez reçu un nom d'utilisateur PostgreSQL différent de celui de votre système d'exploitation. Dans ce cas, vous devez utiliser le commutateur -U.

25
Tanmay

Votre erreur est affichée dans la documentation officielle. Vous pouvez lire cet article .

J'ai copié le motif pour vous (et hyperlien les URL) de cet article:

Cela se produira si l'administrateur n'a pas créé de compte utilisateur PostgreSQL pour vous. (Les comptes utilisateur PostgreSQL sont distincts des comptes utilisateur du système d'exploitation.) Si vous êtes l'administrateur, voir Chapitre 20 pour obtenir de l'aide sur la création de comptes. Vous devez devenir l'utilisateur du système d'exploitation sous lequel PostgreSQL a été installé (généralement postgres) pour créer le premier compte utilisateur. Il se peut également que vous ayez reçu un nom d'utilisateur PostgreSQL différent de celui de votre système d'exploitation; dans ce cas, vous devez utiliser le commutateur -U ou définir la variable d'environnement PGUSER pour spécifier votre nom d'utilisateur PostgreSQL.

Pour vos besoins, vous pouvez faire:

1) Créez un compte utilisateur PostgreSQL:

Sudo -u postgres createuser tom -d -P

(L'option -P permet de définir un mot de passe. L'option -d permet de créer une base de données pour votre nom d'utilisateur 'tom'. Notez que 'tom' est le nom d'utilisateur de votre système d'exploitation. Vous pourrez ainsi exécuter des commandes PostgreSQL sans Sudoing.)

2) Vous devriez maintenant pouvoir exécuter createdb et d’autres commandes PostgreSQL.

5
Rocky Inde

1- Se connecter en tant qu'utilisateur PostgreSQL par défaut (postgres)

Sudo -u postgres -i

2- En tant qu'utilisateur postgres. Ajouter un nouvel utilisateur de base de données à l'aide de la commande createuser

[postgres]$ createuser --interactive

3 sortie

[postgres]$ exit
3
Saman Mohamadi

J'ai eu le même problème, je fais juste ça

Sudo su - postgres

createuser odoo -U postgres -dRSP #P comme mot de passe ( odoo ou nom d'utilisateur que vous voulez donner à l'accès postgres)

1
Sagar T

Sous Windows, utilisez:

C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>

Ajoutez --superuser ou --createdb selon le cas. 

Voir https://www.postgresql.org/docs/current/static/app-createuser.html pour d'autres options.

0
ostergaard