Start · Sprachen · PHP · Referenz · pg_change_password

pg_change_password

Funktion

Ändert das Passwort eines PostgreSQL-Benutzers direkt über die bestehende Verbindung.

seit PHP 8.0.0 Kategorie: db

Signatur

pg_change_password(PgSql\Connection $connection, string $user, string $password): bool

Beschreibung

pg_change_password() ändert das Passwort eines bestehenden PostgreSQL-Datenbankbenutzers. Die Funktion sendet intern einen ALTER USER-Befehl an den Server und übernimmt dabei die korrekte Formatierung und das Escaping des Passworts, sodass keine manuelle Zeichenketten-Interpolation notwendig ist.

Die Funktion ist besonders nützlich in Administrationsskripten oder Benutzer-Management-Modulen, bei denen Passwörter programmatisch geändert werden müssen. Da das Passwort intern sicher übergeben wird, ist das Risiko einer SQL-Injection deutlich geringer als bei einer manuell aufgebauten ALTER USER-Abfrage.

Voraussetzung ist, dass der über $connection angemeldete Datenbankbenutzer über ausreichende Rechte verfügt, das Passwort des angegebenen Benutzers zu ändern. Superuser können das Passwort beliebiger Benutzer ändern; normale Benutzer können in der Regel nur ihr eigenes Passwort ändern.

Parameter

Name Typ Default Beschreibung
$connection Pflicht PgSql\Connection Eine aktive PostgreSQL-Verbindungsinstanz, die z. B. von pg_connect() oder pg_pconnect() zurückgegeben wurde.
$user Pflicht string Der Name des PostgreSQL-Benutzers, dessen Passwort geändert werden soll.
$password Pflicht string Das neue Klartext-Passwort für den angegebenen Benutzer. Die Funktion übernimmt die sichere Übergabe an den Server.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Passwort erfolgreich geändert wurde, andernfalls false. Im Fehlerfall (z. B. fehlende Rechte oder ungültiger Benutzername) wird false zurückgegeben.

Beispiele

Passwort eines Benutzers ändern

<?php
$conn = pg_connect('host=localhost dbname=mydb user=postgres password=secret');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$user = 'webapp_user';
$newPassword = 'sicheresNeuesPasswort!42';

if (pg_change_password($conn, $user, $newPassword)) {
    echo "Passwort für Benutzer '$user' erfolgreich geändert.";
} else {
    echo "Fehler: Passwort konnte nicht geändert werden.";
}

pg_close($conn);
Passwort für Benutzer 'webapp_user' erfolgreich geändert.

Eigenes Passwort im Benutzerbereich ändern

<?php
// Der eingeloggte DB-Nutzer ändert sein eigenes Passwort
$conn = pg_connect('host=localhost dbname=mydb user=webapp_user password=altesPasswort');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

// Neues Passwort stammt z. B. aus einem validierten Formular
$newPassword = $_POST['new_password'] ?? '';

if (empty($newPassword)) {
    die('Kein Passwort angegeben.');
}

$result = pg_change_password($conn, 'webapp_user', $newPassword);

if ($result) {
    echo 'Ihr Passwort wurde erfolgreich aktualisiert.';
} else {
    echo 'Das Passwort konnte nicht geändert werden. Bitte prüfen Sie Ihre Berechtigungen.';
}

pg_close($conn);
Ihr Passwort wurde erfolgreich aktualisiert.

// Wichtig · Fallstricke

Sicherheitshinweis: Das neue Passwort wird als Klartext an die Funktion übergeben. Stellen Sie sicher, dass die Datenbankverbindung über SSL/TLS verschlüsselt ist (Parameter sslmode=require in der Verbindungszeichenkette), um das Passwort vor dem Abfangen im Netzwerk zu schützen.

Berechtigungen: Normale Benutzer können in der Regel nur ihr eigenes Passwort ändern. Versucht ein Benutzer ohne ausreichende Rechte, das Passwort eines anderen Benutzers zu ändern, schlägt die Funktion fehl und gibt false zurück.

Passwort-Validierung: Führen Sie vor dem Aufruf eine serverseitige Validierung des neuen Passworts durch (Länge, Komplexität), um schwache Passwörter zu verhindern. Die Funktion selbst nimmt keine Bewertung der Passwortstärke vor.