Authentifizierung per Passwort
Wir PostgreSQL auf einem Linux Rechner zum Beispiel mit Ubuntu installiert, werden Benutzer bei der Anmeldung auf der Kommandozeile per angemeldeten Benutzer identifiziert.
Ist man zum Beispiel mit dem User mike angemeldet wird bei der Benutzung von psql automatisch mit diesem Benutzer auf die Datenbank verbunden. Bei dem Versuch als ein anderer Benutzer eine Verbundung zu erstellen kommt es zu folgender Fehlermeldung:
psql -U postgres
psql: FATAL: Ident-Authentifizierung für Benutzer >>postgres<< fehlgeschlagenDas Problem liegt darin, dass nun versucht wird als User postgres zu verbinden die Authentifizierung aber fehlschlägt da man als anderer Benutzer angemeldet ist.
Wie kann dies verhindert werden? Die Authentifizierungsmethode kann geändert werden, damit nach einem Passwort gefragt wird.
Die Konfiguration findet sich in der Datei pg_hba.conf. Hier wird nun die Authentifizierung entsprechend gändert.
sudo gedit /etc/postgresql/8.4/main/pg_hba.conf
Hie ist bei der Login-Konfiguration für die lokale Anmeldung der typ von ident auf password geändert.
# Database administrative login by UNIX sockets
local all postgres password
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all password
Anschliessend muss der PostgreSQL Server neu gestartet werden.
sudo /etc/init.d/postgresql-8.4 restart
Autostart deaktivieren Mac OSX
Damit der Server nicht automatisch startet sind folgende Änderungen nötig.
- Öffnen der Datei /Library/LaunchDeamons/com.edb.launchd.postgresql-x.x.plist
- Ändern des Eintrags RunAtLoad auf false.
<key>RunAtLoad</key>
<false/>
Um den Server von Hand zu Starten oder zu Stoppen werden folgende Befehle benötigt.
- sudo launchctl start com.edb.launchd.postgresql-9.0
sudo launchctl stop com.edb.launchd.postgresql-9.0 - Um die genaue Bezeichnung des Dienstes herauszufinden ist folgender Befehl hilfreich.
- sudo launchctl list | grep postgresql
psql im Terminal
Um die psql auf der Kommandozeile nutzen zu können müssen Sie ihre Pfadvariable enstprechend anpassen. Dies können Sie mit folgendem Befehl erreichen.
export PATH=$PATH:/Library/PostgreSQL/9.0/bin/
Nun können auf der Kommandozeile die Befehle wie psql direkt verwendet werden.
Um die Einstellung dauerhatf zu speichern kann dieser Befehl für den Entsprechenden User im Profil hinterlegt werden.
echo "export PATH=\$PATH:/Library/PostgreSQL/9.0/bin/" >> ~/.bash_profile