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?
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.)
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
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.
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 Sudo
ing.)
2) Vous devriez maintenant pouvoir exécuter createdb
et d’autres commandes PostgreSQL.
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
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)
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.