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?
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.)
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
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.
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.
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
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)
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