Also, ich versuche, ein Installationsskript für meine Anwendung (Ubuntu 16) zu erstellen. Er muss einen postgresql-Benutzer erstellen, diesem Benutzer die Berechtigung erteilen, sich über ein Kennwort zu authentifizieren, und diesem Benutzer die Berechtigung erteilen, sich lokal zu authentifizieren. Ich möchte nur die Erlaubnis geben, das auf einer Datenbank, der Anwendungsdatenbank, zu tun. Also muss ich die Zeile local databasename username md5
über die Zeilen einfügen, die unbekannte Verbindungen ablehnen, zB im Abschnitt "Setze deine aktuelle Konfiguration hier" von pg_hba.conf.
(pg_hba.conf
benutzt Position in der Datei um Priorität zu bestimmen: erste gefundene Regel, die der Verbindung entspricht . Endergebnisses)Korrekter Weg zum Bearbeiten von pg_hba.conf
diese Zeile hinzuzufügen, mein Skript ausgeführt wird:
sudo awk '
/# Put your actual configuration here/ {
print "local databasename username md5"
}
{ print }
' /etc/postgresql/9.5/main/pg_hba.conf
# other setup
service postgresql restart
Aber das ist weniger als optimal. Erstens wird sich die Versionsnummer in der Zukunft ändern, so dass das Verzeichnis schlecht codiert werden kann. Zweitens, das macht einen Kommentar im Projekt von jemand anderem zu einem tatsächlichen strukturellen Teil der Konfigurationsdatei, was eine schreckliche Idee von allen möglichen Standpunkten in allen möglichen Universen ist.
Also meine Frage ist twopart. Erstens, gibt es eine gute, korrekte und akzeptierte Methode zum Bearbeiten von pg_hba.conf, die ich in einem Installationsskript statt Kitbashing mit Text-Editoren verwenden kann?
Zweitens, wenn es keine gute Antwort auf den ersten Teil gibt: gibt es eine programmatische Möglichkeit, postgresql fragen, wo es pg_hba auszieht?
nicht sicher, ob Sie wollen den debian/ubuntu Weg oder nicht. –