Erreur PostgreSQL: Fatal: rôle "nom d'utilisateur" n'existe pas
je prépare mon PostgreSQL 9.1. Je ne peux rien faire avec PostgreSQL: ne peut pas createdb
, ne peut pas createuser
; toutes les opérations retourner le message d'erreur
Fatal: role h9uest does not exist
h9uest
est mon nom de Compte, et I sudo apt-get install
PostgreSQL 9.1 sous ce compte.
Une erreur similaire persiste pour le compte root
.
11 réponses
utilisez le utilisateur du système d'exploitation postgres
pour créer votre base de données - aussi longtemps que vous n'avez pas mis en place un base de données rôle avec les privilèges nécessaires qui correspond à votre utilisateur du système d'exploitation du même nom ( h9uest
dans votre cas):
sudo -u postgres -i
alors réessayez. Type exit
lorsqu'il est utilisé en tant qu'utilisateur du système postgres
.
Ou exécuter la commande unique createuser
comme postgres
avec sudo
, comme démontré par la drees dans une autre réponse.
le point est d'utiliser l'utilisateur du système d'exploitation correspondant au rôle de la base de données du même nom pour obtenir l'accès via ident
authentification . postgres
est l'utilisateur du système d'exploitation par défaut pour avoir initialisé le cluster de base de données. Le manuel:
afin de bootstrap le système de base de données, un fraîchement initialisé système contient toujours un rôle prédéfini. Ce rôle est toujours un "superuser", et par défaut (sauf si 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é la base de données cluster. Habituellement, ce rôle sera appelépostgres
. Pour créer plus de rôles, vous devez d'abord vous connecter comme ceci rôle initial.
j'ai entendu parler de configurations impaires avec des noms d'utilisateur non standard ou où l'utilisateur du système d'exploitation n'existe pas. Vous devez adapter votre stratégie.
Lire sur rôles de base de données et "1519330920 authentification du client" dans le manuel.
après avoir essayé de nombreuses autres solutions, et sans succès, cette réponse m'a finalement aidé.
https://stackoverflow.com/a/16974197/2433309
en bref, en cours d'exécution
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 lancer rake db:create
à partir du terminal sous n'importe quel nom de compte que vous avez mis en place sans avoir à entrer dans les postgres environnement.
sudo su - postgres
psql template1
la création de rôle sur pgsql avec privilège "superuser"
CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;
puis créer utilisateur
CREATE USER username;
eg. CREATE USER demo;
attribuer un privilège à l'utilisateur
GRANT ROOT TO username;
et ensuite activer la connexion de cet utilisateur, de sorte que vous pouvez exécuter par exemple: psql template1
, de la normale $
terminal:
ALTER ROLE username WITH LOGIN;
installer postgres en utilisant apt-get
ne crée pas un rôle d'utilisateur ou une base de données.
pour créer un rôle de super-utilisateur et une base de données pour votre compte d'utilisateur personnel:
sudo -u postgres createuser -s $(whoami); createdb $(whoami)
méthode de travail,
-
vi /etc/postgresql/9.3/main/pg_hba.conf
-
local all postgres peer
ici, remplacer Pair par fiducie "1519110920 -
redémarrage
sudo service postgresql restart
-
essayez maintenant,
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 entrer le mot de passe pour l'utilisateur local.
, Puis saisissez la commande précédente qui a généré "rôle" nom d'utilisateur " n'existe pas."
les étapes ci-dessus ont résolu le problème pour moi. Dans la négative, veuillez envoyer des messages de terminal pour les étapes ci-dessus.
Je l'ai installé sur macOS et j'ai dû:
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
suivez ces étapes et il fonctionnera pour vous:
- exécuter
msfconsole
- type db_console
- certaines informations vous seront montrées choisir l'information qui vous dit de faire:
db_connect user:pass@host:port.../database
désolé Je ne m'en souviens pas mais c'est comme celui-ci puis remplacer l'utilisateur et le mot de passe et l'hôte et la base de données avec les informations incluses dans ledatabase.yml
dans le emplacement:/usr/share/metasploit-framework/config
- , vous verrez. reconstruire le cache modèle en arrière-plan.
- Tapez apt-get update && apt-get upgrade après la mise à jour redémarrez le terminal et le menu msfconsole et il fonctionne vous pouvez vérifier qu'en tapant
msfconsole: msf>db_status
vous verrez qu'il est connecté.
initialiser Manuellement le démarreur DB résolu, dans mon cas.
l'Exécution initdb
a fait le tour pour moi.
pour une raison quelconque, quand j'ai installé postgres, le" DB initial " n'a pas été créé.
pour résoudre le problème, c'est la solution prévue pour le wiki postgreSQL - premiers pas .
initdb
typiquement, l'installation de postgres sur votre système d'exploitation crée une" DB initiale " et démarre l'exécution du démon du serveur postgres. Si ce n'est pas le cas, vous devrez exécuter initdb
désinstaller tout et garder Postgres.app:
brew cask uninstall postgres
brew uninstall postgres
brew cask install postgres
rm -rf /Applications/Postgres93.app/
# shutdown any postgres instance
# open postgres.app -> "Initialize"
je voulais PostgreSQL 9.6