2015-02-03 11 views
5

Freiberuflich tuend, komme ich auf neue projets.Config postgres, um irgendeine Benutzer-/Kennwortkombination im Entwicklungsmodus zu akzeptieren

Ich finde postgresql Config sehr kompliziert, wenn nur im Entwicklungsmodus verwendet (ich verstehe völlig, dass die Produktionsanforderungen sehr unterschiedlich sind).

Was ich erreichen möchte, ist meine Postgres zu konfigurieren, so dass was auch immer Benutzername/Passwort/Port/Connexion-Modus verwendet wird, hat es alle Rechte an der DB (als Sicherheit ist hier egal). Bei der Arbeit mit Rails ist die gesamte Konfiguration in config/database.yml und ich möchte nichts von der Datei selbst ändern.

erreicht ich für jede Verbindung jede password_less Authentifizierung mit (lokal und TCP), aber dies zu tun:

# /etc/postgresql/9.3/main/pg_hba.conf 
# TYPE DATABASE  USER   ADDRESS     METHOD 
local all    all          trust 
host all    all    0.0.0.0/0    trust 

Und:

# /etc/postgresql/9.3/main/postgresql.conf 
listen_addresses = '*' 

Wie aus dieser Post.

Aber wenn der Benutzer (. ZB appname_dev) nicht vorhanden ist, erhalte ich:

FATAL: role "appname_dev" does not exist 

Dieses Post ermöglicht es mir, den Benutzer in 1 Zeile zu erstellen, die fair genug ist (sudo -u postgres createuser -d -R -P appname_dev), aber ich würde wirklich gerne Plug and Play sein.

  • Wie kann ich das erreichen?
  • Gibt es bei postgres keinen Entwicklungsinstallationsmodus, in dem die Anmeldeinformationen standardmäßig viel einfacher konfiguriert wären als der aktuelle?
  • Fehle ich einige Best Practice, die dies kein Problem machen?

Ich verstehe die Port-Sache kann knifflig sein, aber IMHO, sollte der Rest nicht!

Danke für die Hilfe!

+0

Es scheint, dass Sie wollen [sqlite] (http://www.sqlite.org), außer es ist nicht vollständig kompatibel mit Postgres auf SQL-Ebene. –

+0

SQLite passt die meisten meiner Anforderungen. Aber was ich möchte ist eine funktionierende db out of the box, ohne eine einzige Konfigurationsdatei bearbeiten zu müssen, was bedeutet, dass die Wahl von Postgres + Benutzername + Passwort bereits getroffen wurde, nicht von mir. –

+2

Sie können nur Verbindungen mit Benutzern herstellen, die in der Datenbank vorhanden sind. Es gibt keinen Weg dahin. Gibt es einen Bootstrap-Schema-Setup-Code in Ihrer Entwicklungsumgebung? Sie könnten dort das notwendige 'create user'-Skript einfügen, und da jeder als Superuser eine Verbindung herstellen kann, kann jeder diesen Bootstrap-Code ausführen. –

Antwort

0

Sie können dies erreichen, indem pgbouncer (Verbindung pooler) mit folgenden Einstellungen:

* = host=127.0.0.1 user=postgres 
auth_type = any 

so, wenn Sie eine Verbindung mit jedem Benutzer und jedes Passwort pgbouncer es Postgres als Postgres Benutzer verbinden, das alle Berechtigungen .

Sie können auch pgbouncer Port zu 5432 ändern (standardmäßig funktioniert es auf 6432 Port) und Postgres Port zu etwas anderem ändern, so dass Ihre Anwendung zu pgbouncer ohne irgendwelche Änderungen in den Konfigurationen verbinden wird.

Verwandte Themen