it-swarm.com.de

Wenn Sie unter macOS den Benutzer zu "postgres" wechseln, wird der Fehler "su: Sorry" angezeigt

Das Postgres-Installationsprogramm , das der Community freundlicherweise von EnterpriseDB.com zur Verfügung gestellt wird, erstellt ein postgres Benutzerkonto auf macOS , wie es üblich ist.

In einer Konsolensitzung in Terminal.app muss ich zu diesem Benutzer wechseln. Mein Ziel ist es, einen Texteditor mit den Berechtigungen dieses Benutzers auszuführen, damit ich die Datei pg_hba.conf Bearbeiten kann, die die Postgres-Benutzerauthentifizierungsregeln steuert.

Wenn ich es versuche:

su - postgres

… Ich werde aufgefordert, das Passwort des Benutzers einzugeben, das ich erfolgreich eingegeben habe, erhalte jedoch die folgende Fehlermeldung:

su: Entschuldigung

Ich bin sicher, dass das Passwort korrekt ist. Was kann ich tun, um auf den Benutzer postgres zuzugreifen?

3
Basil Bourque

Sudo su postgres

Nachdem ich diese geschlossene Frage zum Stapelüberlauf und sein Duplikat gefunden habe, werde ich hier die gefundenen Lösungen veröffentlichen dort und dort .

➥ Sie müssen den Befehl Sudo kombiniert Mit dem Befehl su verwenden.

Sudo su postgres

Wenn Sie dazu aufgefordert werden, geben Sie Ihr macOS-Administratorbenutzerkennwort anstelle des Kennworts postgres ein. Zu diesem Zeitpunkt ist Ihr Mac-Administrator derjenige, der den Befehl Sudo ausführt, nicht der Benutzer postgres.

Ich verstehe zwar nicht, warum wir das Sudo mit dem su kombinieren müssen, aber es funktioniert tatsächlich für mich in macOS Mojave . Ich habe diesen Tipp bei meinen verschiedenen Suchanstrengungen im Zusammenhang mit BSD und Linux nicht gefunden. Vielleicht handelt es sich also nur um einen Mac Apple, möglicherweise um eine zusätzliche Sicherheitsmaßnahme. Oder unter Betriebssystemen im Unix-Stil muss der Befehl su vom Benutzer root ausgeführt werden, und unter macOS ist das Konto root aus Sicherheitsgründen standardmäßig deaktiviert - unser Das Mac-Administrator-Benutzerkonto ist weniger leistungsfähig als root und möglicherweise nicht standardmäßig zum Ausführen von su autorisiert. Keine Ahnung, egal, die Problemumgehung funktioniert.

Moderne Alternative: Sudo -u

Nach zu Craig Ringer und zu Erwin Brandstetter ist die modernere Form:

Sudo -u postgres -i

Laut diese Seite :

  • -u Bedeutet "einen angegebenen Befehl als diesen angegebenen Benutzer ausführen".
  • postgres gibt den Benutzernamen an, unter dem der Befehl ausgeführt werden soll.
  • -i Simuliert eine anfängliche Anmeldung, dh die Shell wird mit den Startskripten des Benutzers initialisiert.
  • Da kein Befehl bereitgestellt wird, wird eine interaktive Shell ausgeführt.

Weitere Informationen zu älteren und neueren Ansätzen finden Sie in dieser Frage auf der Schwesterseite Was ist der Unterschied zwischen Sudo su - postgres und Sudo -u postgres ? . Die Antwort von Craig Ringer lautet: (a) Vergessen Sie Sudo su Und (b) verwenden Sie stattdessen Sudo -u.

Führen Sie Apps als postgres Benutzer aus

So führen Sie eine psql Sitzung als postgres Benutzer aus:

Sudo -u postgres psql

So führen Sie die nanoTexteditor App als postgres Benutzer aus:

Sudo -u postgres nano
3
Basil Bourque

Das EBD-Installationsprogramm fragt während der Installation nach einem Kennwort, das jedoch für den Datenbankbenutzer bestimmt ist, nicht für den Unix-Benutzer postgres, der kein Kennwort hat.

Dies wird in Postgres, Passwörter und Installer auf der EDB-Site erwähnt. Zitat:

Unter Unix-ähnlichen Betriebssystemen wie Linux und Mac OS X ist das Konto eingerichtet ohne Kennwort und Benutzer müssen sich im Allgemeinen nie wieder darum kümmern.

Die plausibelste Erklärung zu su - postgres funktioniert nicht, wenn Sie das Datenbankkennwort mit dem Betriebssystemkennwort verwechseln.

su - postgres verwendbar, müsste zuerst das Betriebssystemkennwort festgelegt werden, was folgendermaßen erfolgen könnte:

$ Sudo passwd postgres

Dies gilt auch für PostgreSQL, das in Linux-Distributionen enthalten ist. Tatsächlich gehen die PostgreSQL-Pakete für Linux sogar noch einen Schritt weiter und fragen nicht nach einem Kennwort für den Datenbank-Superuser, was eine vollautomatische Installation ermöglicht. So wie das Betriebssystemkennwort nicht erforderlich ist, wenn Sudo immer verwendet wird, ist ein Datenbankkennwort nicht erforderlich, wenn der Benutzer peer jemals nur die Standardauthentifizierungsmethode postgres verwendet.

3
Daniel Vérité