113 votes

Createuser : 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 avec des autorisations pour lire et créer des bases de données. Cependant, lorsque j'utilise :

createuser username

dans mon terminal, j'obtiens le message suivant :

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

Tom est le compte utilisateur Ubuntu auquel je suis connecté en ce moment. J'essaye de créer un nom d'utilisateur "postgres" puis de faire un psql -U psql template1 afin que je puisse créer une base de données et lui attribuer un propriétaire pour mon application Rails.

158voto

Craig Ringer Points 72371

Vous avez mentionné Ubuntu, je suppose donc que vous avez installé les paquets PostgreSQL depuis Ubuntu via apt.

Si tel est le cas, le postgres Le compte d'utilisateur PostgreSQL existe déjà et est configuré pour être accessible via peer l'authentification pour les sockets unix dans pg_hba.conf . Vous y accédez en exécutant des commandes telles que la commande postgres utilisateur unix, par exemple

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

Tout cela se trouve dans le Ubuntu PostgreSQL qui est le premier résultat de Google pour "Ubuntu PostgreSQL" et qui fait l'objet de nombreuses questions sur Stack Overflow.

(Vous avez rendu la réponse à cette question beaucoup plus difficile en omettant des détails comme le système d'exploitation et la version sur lesquels vous travaillez, la façon dont vous avez installé PostgreSQL, etc.)

93voto

user3402754 Points 1117

Voir le gist git avec les instructions ici

Fais ça :

 sudo -u postgres psql

OU

psql -U postgres

dans votre terminal pour accéder à postgres

NB : Si vous êtes sur un Mac et que les deux commandes ci-dessus ont échoué, passez à la section sur le Mac ci-dessous.

postgres=#

Exécuter

CREATE USER new_username;

Note : Remplacez new_username par l'utilisateur que vous voulez 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 s'est bien passé,

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 (pour Mac) :

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

psql: FATAL: role "postgres" does not exist

En effet, mon installation était configurée avec un superutilisateur de la base de données dont le nom de rôle est le même que votre nom de connexion (court).

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

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

Si vous avez installé avec homebrew courir :

/usr/local/opt/postgres/bin/createuser -s postgres

Si vous utilisez une version spécifique de postgres, par exemple 10.5 puis courir :

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

OU :

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

OU :

/usr/local/opt/postgresql@11/bin/createuser -s postgres

Si vous avez installé avec postgres.app pour l'exécution de Mac :

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

P.S : remplacez 10.5 par votre version de PostgreSQL

32voto

Tanmay Points 336
sudo -u postgres createuser -s tom 

Cela devrait vous aider car cela se produit si l'administrateur n'a pas créé de compte utilisateur PostgreSQL pour vous. Il se peut également qu'on vous ait attribué un nom d'utilisateur PostgreSQL différent de celui de votre système d'exploitation, dans ce cas, vous devez utiliser le commutateur -U.

7voto

Rocky Inde Points 152

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

J'ai copié pour vous les raisons (et mis en hyperlien les URL) de cet article :

Cela se produit si l'administrateur n'a pas créé de compte d'utilisateur PostgreSQL pour vous. (Les comptes d'utilisateur PostgreSQL sont distincts des comptes d'utilisateur du système d'exploitation). Chapitre 20 pour obtenir de l'aide pour créer des comptes. Vous devrez 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 qu'on vous ait attribué 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 le faire :

1) Créez un compte utilisateur PostgreSQL :

sudo -u postgres createuser tom -d -P

(le -P pour définir un mot de passe ; l'option -d pour permettre la création d'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. De cette manière, vous pouvez exécuter les commandes PostgreSQL sans sudo )

2) Maintenant, vous devriez être en mesure d'exécuter createdb et d'autres commandes PostgreSQL.

7voto

Saman Mohamadi Points 1384

1- Connectez-vous comme utilisateur PostgreSQL par défaut (postgres)

sudo -u postgres -i

2- En tant qu'utilisateur de postgres. Ajoutez un nouvel utilisateur de la base de données en utilisant l'option createuser commande

[postgres]$ createuser --interactive

3-exit

[postgres]$ exit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X