2016-04-25 5 views
1

Ich beginne gerade mit Ruby on Rails. Ich baue eine Hello World App und verwende PostgreSQL. Ich benutzte den folgenden Befehl, um die App zu erstellen:Wie kann meine Ruby on Rails App ohne Passwort auf die Datenbank zugreifen?

rails new rails-hw -d postgresql 

ich einen Datenbankbenutzer erstellt createuser -s pguser mit und ich ein Passwort.

Ich bearbeitet den Entwicklungsteil der config/database.yml, benutze den Benutzernamen und das Passwort des Benutzers, den ich erstellt habe. Es scheint jedoch, dass das, was ich für das Passwort in der Datei database.yml verwende, keine Rolle spielt und meine App immer auf die Daten in der Datenbank zugreifen kann. Warum ignoriert es das Passwort?

+0

In der Tat, können Sie das Passwort von 'database.yml' entfernen. –

Antwort

1

Da Ihre aktuelle Postgres-Installation für Verbindungen von localhost konfiguriert ist.

Überprüfen Sie Ihre pg_hba.conf höchstwahrscheinlich Sie so etwas wie dieses finden: „erlauben Sie alle Anschlüsse für alle Postgres Benutzer und Datenbanken von 127.0.0.1“

# TYPE DATABASE USER  IP-ADDRESS IP-MASK    METHOD 
host all   all   127.0.0.1  255.255.255.255  trust 

die im Grunde sagt

Weitere Einzelheiten finden Sie in der Dokumentation zu finden: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html (siehe Beispiel 20-1)

0

Werfen Sie einen Blick auf Ihre pg_hba.conf. Es wird wahrscheinlich eine Sonderbehandlung für lokale Benutzer (Verbindungen von der gleichen Maschine) enthält:

# Database administrative login by Unix domain socket 
local all    all          trust 

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     trust 

dort diese trust Methoden sehen? Dies macht Passwörter nicht erforderlich. Von den documentation:

Wenn trust Authentifizierung angegeben, nimmt PostgreSQL dass jeder, der mit dem Server verbinden kann, ist berechtigt, die Datenbank mit dem, was Datenbank-Benutzername für den Zugriff auf sie (auch Super-User-Namen) angeben. Natürlich gelten die Einschränkungen in den Spalten Datenbank und Benutzer weiterhin. Diese Methode sollte nur verwendet werden, wenn auf Verbindungen zum Server ein angemessener Schutz auf Betriebssystemebene vorhanden ist.

Verwandte Themen