OperationalError at /admin/
FATAL: Peer authentication failed for user "myuser"
Dies ist der Fehler, den ich erhalte, wenn ich versuche, zu meiner Django-Administrationsseite zu gelangen. Ich hatte MySQL-Datenbank kein Problem verwendet. Ich bin neu in PostgreSQL, habe mich aber für einen Wechsel entschieden, da der Host, den ich letztendlich für dieses Projekt verwenden möchte, nicht über MySQL verfügt.
Daher dachte ich mir, ich könnte den Prozess der Installation von PostgreSQL durchlaufen, a ausführen syncdb
und fertig sein.
Das Problem ist, dass ich meine App scheinbar nicht dazu bringen kann, eine Verbindung zur Datenbank herzustellen. Ich kann mich über die von mir heruntergeladene Befehlszeile oder Desktop-App bei PostgreSQL anmelden. Nur nicht im Drehbuch.
Außerdem kann ich gut manage.py shell
auf die Datenbank zugreifen.
Irgendwelche Gedanken?
quelle
config/database.yml
- das heißt, in dieser Datei musste ich die Zeile hinzufügenhost: localhost
(oder wo immer sich der Postgres-Server befindet - meiner war lokal).pg_hba.conf
so eingerichtet, dass normale Benutzer keine Verbindung über UNIX-Sockets herstellen können, diese jedoch über TCP / IP von localhost aus zugelassen werden.local_settings.py
Datei und die# Set to empty string for localhost. Not used with sqlite3.
ist in ihrer. LÜGEN!!!Dies liegt wahrscheinlich daran, dass Ihr Skript unter einem anderen Benutzer als dem ausgeführt wird, mit dem Sie eine Verbindung herstellen möchten ( myuser hier). In diesem Fall schlägt die Peer-Authentifizierung fehl. Ihre Lösung mit
HOST: "localhost"
funktioniert, weil Sie keine Peer-Authentifizierung mehr verwenden. Es ist jedoch langsamer alsHOST: ""
weil Sie anstelle von Unix-Sockets TCP-Verbindungen verwenden. Aus Django-Dokumenten :Wenn Sie weiterhin Sockets verwenden möchten, sind die richtigen Einstellungen
pg_hba.conf
erforderlich. Das einfachste ist:während Sie alle anderen
local
Zeilen in der Konfiguration auskommentieren. Beachten Sie, dass das erneute Laden von Postgres erforderlich ist, damit diese Änderung wirksam wird.Aber wenn Multi-User - Produktionsmaschine in Frage, könnte man etwas sicherer wie verwenden mag
md5
(siehe hier zur Erläuterung der verschiedenen Authentifizierungsmethoden).quelle
Besser als volles Vertrauen ist es, es einfach auf md5 zu setzen.
quelle
Ich habe dies behoben, indem ich den unteren Rand von /etc/postgres/9.1/main/pg_hba.conf so bearbeitet habe (md5 in Vertrauen ändern; HINWEIS: Dies bedeutet, dass es kein Datenbankkennwort gibt, das möglicherweise nicht Ihren Wünschen entspricht).
quelle
Ich bin gerade auf das gleiche Problem gestoßen, wollte aber Unix-Sockets verwenden, wie Clime sagte, aber immer noch die
peer
Methode verwenden. Ich habe meinen System-Benutzernamen mit dem Postgres-Benutzernamen in der verknüpftpg_hba.conf
, der mit derpeer
Methode arbeitet.Innen habe
pg_hba.conf
ich hinzugefügt:Innen habe
pg_ident.conf
ich hinzugefügt:quelle