/ / Wie funktioniert die Benutzerauthentifizierung in Postgresql - postgresql?

Wie funktioniert die Benutzerauthentifizierung in Postgresql - postgresql?

Wie genau arbeiten Benutzer / Rollen in Postgresql für die Zugriffskontrolle und wie unterscheiden sie sich von Benutzern, die die Zugriffskontrolle im Betriebssystem bereitstellen?

Bei der Installation von Postgresql kann ich sehen, dass der Benutzer postgres wie in / etc / passwd erstellt wurde.

Ich kann psql durch sudo verwenden und die Benutzer / Rollen in Postgres sehen.

$ sudo -u postgres psql
postgres=# du
List of roles
Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
postgres  | Superuser, Create role, Create DB, Replication | {}

Dies weist darauf hin, dass eine Rolle mit dem Namen postgres existiert, aber Versuche, sie zu verwenden, anstatt sudo zu verwenden, scheitern.

$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

Warum und was ist die Verbindung zwischen dem postgres-Benutzer in / etc / passwd und der postgres-Rolle, die von du gedruckt wird?

Antworten:

0 für die Antwort № 1

Die Verbindung zwischen dem Betriebssystembenutzer "postgres" und der Rolle "postgres" ist:

  1. Sie werden gleich geschrieben
  2. Wenn Sie die Option -U nicht für psql angeben, wird standardmäßig der Betriebssystembenutzername als Rollenname verwendet. Dies kann "postgres" sein, wenn dies Ihr Betriebssystembenutzer ist.
  3. Wenn Sie in pg_hba die Berechtigung "Peer" angeben.conf, was du anscheinend getan hast, dann musst du der os Benutzer sein, um dich als diese Rolle einzuloggen. Wenn Sie diese Regel nicht möchten, ändern Sie sie in etwas anderes, wie Vertrauen, MD5 usw.