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 j'ai besoin de créer un utilisateur avec des permissions pour lire et créer des bases de données. Cependant, lorsque j'utilise "createuser username" dans mon terminal, je reçois le message suivant:

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

Tom est mon compte D'utilisateur Ubuntu dans lequel je suis connecté en ce moment. Je suis en train de créer un nom d'utilisateur de "postgres", puis faire un "psql -U psql template1" donc je peux créer une base de données et attribuer un propriétaire pour mon application Rails.

de l'aide?

61
demandé sur user3402754 2013-06-07 02:05:44

7 réponses

vous avez mentionné Ubuntu donc je vais deviner que vous avez installé les paquets PostgreSQL depuis Ubuntu via apt.

si c'est le cas, le compte D'utilisateur postgres PostgreSQL existe déjà et est configuré pour être accessible via peer authentification pour les sockets unix dans pg_hba.conf . Vous y accédez en exécutant des commandes comme l'utilisateur unix postgres , par exemple:

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

C'est tout dans le Ubuntu PostgreSQL documentation qui est le premier Google hit Pour "Ubuntu PostgreSQL" et est couvert dans de nombreuses questions de débordement de pile.

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

98
répondu Craig Ringer 2014-07-15 06:42:54

See gitgist with instructions here

Exécuter ceci:

 sudo -u postgres psql

ou

psql -U postgres

dans votre terminal pour entrer dans postgres

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 utilisateur pour être en mesure de créer un DB, vous devez modifier le rôle de superuser

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

Pour confirmer, tout est 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

c'est parce que mon installation a été configurée avec un super-utilisateur de base de données dont le nom de rôle est le même comme votre login (court) nom.

mais certains scripts linux supposent que le super-utilisateur a le rôle traditionnel de postgres

Comment ai-je résolu cela?

si vous avez installé avec homebrew exécuter:

/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é postgres.app pour Mac exécuter:

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

P. S: remplacer 10.5 par votre version PostgreSQL

30
répondu user3402754 2018-09-05 18:31:43
sudo -u postgres createuser -s tom 

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

24
répondu Tanmay 2013-08-07 18:42:39

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

j'ai copié la raison pour vous (et hyperlié les URLs) de cet article:

cela se produira si L'administrateur n'a pas créé de Compte D'utilisateur PostgreSQL pour vous. (Les comptes d'utilisateurs PostgreSQL sont distincts des comptes d'utilisateurs du système d'exploitation.) Si vous êtes l'administrateur, voir Chapitre 20 pour aider à créer des comptes. Vous devrez devenir l'utilisateur du système d'exploitation sous lequel PostgreSQL a été installé (habituellement postgres) pour créer le premier compte d'utilisateur. Il se peut aussi que vous ayez reçu un nom D'utilisateur PostgreSQL différent du nom d'utilisateur 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éer un compte d'utilisateur PostgreSQL:

sudo -u postgres createuser tom -d -P

(l'option -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 votre système d'exploitation nom d'utilisateur. De cette façon, vous pouvez exécuter des commandes PostgreSQL sans sudo ing.)

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

5
répondu Rocky Inde 2014-10-06 21:07:47

1 - connectez-vous en tant que par défaut de l'utilisateur PostgreSQL (postgres)

sudo -u postgres -i

2-comme utilisateur postgres. Ajouter un nouvel utilisateur de la base de données en utilisant la commande createuser "

[postgres]$ createuser --interactive

3-quitter

[postgres]$ exit
3
répondu Saman Mohamadi 2017-08-21 15:09:51

j'ai eu le même problème, je viens de le faire

sudo su-postgres

createuser odoo-U postgres-dRSP #P for password ( odoo ou nom d'utilisateur que vous souhaitez donner la postgres accès)

0
répondu Sagar T 2018-01-16 11:23:03

Vous devez d'abord exécuter initdb. Il va créer le cluster de base de données et la configuration initiale

Voir Comment configurer postgresql pour la première fois? et http://www.postgresql.org/docs/8.4/static/app-initdb.html

-3
répondu Jean-Marie 2017-05-23 12:26:42