Je suis en train de configurer mon PostgreSQL 9.1. Je ne peux rien faire avec PostgreSQL: ne peut pas createdb
, ne peut pas createuser
; toutes les opérations renvoient le message d'erreur
Fatal: role h9uest does not exist
h9uest
est le nom de mon compte et Sudo apt-get install
PostgreSQL 9.1 sous ce compte.
Une erreur similaire persiste pour le compte root
.
Utilisez le utilisateur du système d'exploitation _ postgres
pour créer votre base de données - tant que vous n'avez pas configuré de rôle base de données avec les privilèges nécessaires correspondant à l'utilisateur de votre système d'exploitation portant le même nom (h9uest
dans votre cas):
Sudo -u postgres -i
Puis réessaye. Tapez exit
lorsque vous avez terminé avec l'utilisateur système postgres
.
Ou exécute la commande unique createuser
comme postgres
avec Sudo
, comme démontrée par drees dans une autre réponse.
Le but est d’utiliser l’utilisateur du système d’exploitation correspondant au rôle de base de données du même nom pour obtenir l’accès via ident
authentication . postgres
est l'utilisateur du système d'exploitation par défaut pour avoir initialisé le cluster de base de données. Le manuel:
Pour amorcer le système de base de données, un fichier Fraîchement initialisé. Le système contient toujours un rôle prédéfini. Ce rôle est toujours un “Superutilisateur”, et par défaut (à moins d'être modifié lors de l'exécution de
initdb
), il aura le même nom que l'utilisateur du système d'exploitation qui a initialisé le cluster de base de données. Habituellement, ce rôle s'appellerapostgres
. Pour créer plus de rôles, vous devez d’abord vous connecter en tant que ceci rôle initial.
J'ai entendu parler de configurations étranges avec des noms d'utilisateur non standard ou lorsque l'utilisateur du système d'exploitation n'existe pas. Vous devrez adapter votre stratégie à cet endroit.
Lisez à propos de rôles de base de données et authentification client dans le manuel.
Après avoir essayé beaucoup de solutions d'autres personnes, et sans succès, cette réponse m'a finalement aidé.
https://stackoverflow.com/a/16974197/2433309
En bref, courir
Sudo -u postgres createuser owning_user
crée un rôle avec le nom owning_user (dans ce cas, h9uest). Après cela, vous pouvez exécuter rake db:create
à partir du terminal sous le nom de compte que vous avez configuré sans avoir à entrer dans l'environnement postgres.
Sudo su - postgres
psql template1
créer un rôle sur pgsql avec le privilège de "superutilisateur"
CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;
Puis créer un utilisateur
CREATE USER username;
eg. CREATE USER demo;
Attribuer des privilèges à l'utilisateur
GRANT ROOT TO username;
Et puis activez la connexion de cet utilisateur, de sorte que vous puissiez exécuter par exemple: psql template1
, à partir du terminal $
normal:
ALTER ROLE username WITH LOGIN;
Cela fonctionne pour moi:
psql -h localhost -U postgres
Méthode de travail,
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
ici changer peer en trust redémarrer, Sudo service postgresql restart
maintenant essayer, psql -U postgres
Dans l'invite de l'utilisateur local, pas l'invite de l'utilisateur root, tapez
Sudo -u postgres createuser <local username>
Puis entrez le mot de passe pour l'utilisateur local.
Puis entrez la commande précédente qui a généré "le rôle 'nom d'utilisateur' n'existe pas."
Les étapes ci-dessus ont résolu le problème pour moi . Sinon, veuillez envoyer des messages au terminal pour les étapes ci-dessus.
Je l'ai installé sur macOS et je devais:
cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME
Voici la source: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641
Pour la version Postgres 9.5 utilisez la commande suivante:
psql -h localhost -U postgres
J'espère que cela aidera.
La création manuelle d'un cluster de base de données l'a résolu dans mon cas.
Pour une raison quelconque, lorsque j'ai installé postgres, la "base de données initiale" n'a pas été créée. Exécuter initdb
a fait le tour pour moi.
Cette solution est fournie dans le Wiki PostgreSQL - Premières étapes :
initdb
Généralement, l’installation de postgres sur votre système d’exploitation crée une "base de données initiale" et lance le démon du serveur postgres. Sinon, vous aurez besoin de lancer initdb
Suivez ces étapes et cela fonctionnera pour vous:
msfconsole
db_connect user:pass@Host:port.../database
désolé je ne m'en souviens pas mais c'est comme celui-ci puis remplacez l'utilisateur et le mot de passe et l'hôte et la base de données par les informations incluses dans le database.yml
l'emplacement: /usr/share/metasploit-framework/config
msfconsole: msf>db_status
, vous verrez qu'il est connecté.vider et restaurer avec les drapeaux --no-owner --no-privileges
par exemple.
dump - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump
restaurer - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump
Pour Windows utilisateurs: psql -U postgres
Vous devriez voir alors l'interface de ligne de commande pour PostgreSQL: postgres=#
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;