Erlaubte Zeichen in und min. bzw. max. Länge von Passwörtern

Hallo,
gibt es eine Aussage, welche Zeichen in Passörtern erlaubt sind und welche maximale Länge ein Passwort für PostgreSQL 16.2 haben darf?

Vielen Dank im Voraus und beste Grüße
Rainer

Alle Zeichen sind erlaubt, und es gibt keine Längenbeschränkung (wobei ich von Paßwörtern abraten möchte, die mehrere MB lang sind — irgendwann bekommt man sicher Probleme mit dem verfügbaren Hauptspeicher, und die Performance wird auch nicht besser).

Nicht alles, was erlaubt ist, ist auch nützlich. Ich möchte in diesem Zusammenhang auf diesen Cartoon verweisen.

Hallo Laurenz,
vielen Dank für Deine schnelle Antwort.
Bei uns werden die Passwörter im Passwordsafe generiert und für “Service”-Accounts nehmen wir (sofern es geht) ein 50stelliges Password mit allen Arten von Zeichen. Wenn ich ein solches generiere und versuche postgresql auf Windows zu installieren, schlägt es fehl.
Ist das ein Bug oder gibt es doch nicht erlaubte Zeichen oder eine max. Länge?
Eines der Passwörter, mit dem die Installation fehlschlägt lautet z.B.:
cK150$*U]S26Ae9J$NN,%Tyw.4PY_DV3q§0.(vCYL[WL>6O9

Ich habe dann ein Passwort mit 25 Zeichen komplett ohne Sonderzeichen gewählt und konnte damit erstmal installieren…

Mache ich etwas falsch? Bin für Hinweise dankbar.
Beste Grüße
Rainer

Kannst du den Installationsprozeß genauer beschreiben sowie die Art, wie das Paßwort gesetzt wird? Und wie genau äußert sich das Fehlschlagen?

Vielleicht ist es ja ein Problem im Windows-Installer. Ich habe jedenfalls testweise dein Paßwort auf meinem PostgreSQL v16 gesetzt und hatte kein Problem. Im Zweifelsfall kannst du ja das Paßwort nach der Installation setzen.

1 „Gefällt mir“

Ich werde das heute Abend nochmal durchspielen und dann hier möglichst gut beschreiben.

Ich würde auf jeden Fall Zeichen weglassen, die auf der Kommandozeile ein Problem darstellen könnten. So auf Anhieb fallen mir da als potentielle Probleme ein: '"><&:/\[] (und natürlich Leerzeichen)

In Deinem Beispiel ist ein > drin, was auf der Kommandozeile ja die Ausgabe umleitet und zwar in eine Datei mit dem Namen 6O9

Ich denke wenn das Passwort lang genug ist, dann reichen auch Buchstaben (klein & groß) sowie Zahlen. Sonderzeichen sind für ein sicheres Passwort nicht wirklich notwendig.

1 „Gefällt mir“

Ich habe das Passwort cK150$*U]S26Ae9J$NN,%Tyw.4PY_DV3q§0.(vCYL[WL>6O9 mal unter Windows ausprobiert. Wenn ich

 create user rsn with password 'cK150$*U]S26Ae9J$NN,%Tyw.4PY_DV3q§0.(vCYL[WL>6O9';

verwende, kann ich mich danach mit psql nicht Anmelden.

Ändere ich aber das Passwort danach via \password rsn auf genau den gleichen Wert dann funktioniert es.

Wenn ich das § entferne, dann geht es immer.

Ich vermute mal, dass hat etwas mit dem Encoding zu tun, da das § unter UTF-8 zwei Bytes verwendet mit ISO/Windows Encoding aber nur ein Byte. Und je nachdem mit welchem Encoding das Copy & Paste passiert kommt halt etwas anderes dabei raus.

Ich vermute mal, dass hat etwas mit dem Encoding zu tun, da das § unter UTF-8 zwei Bytes verwendet mit ISO/Windows Encoding aber nur ein Byte.

Das klingt wie eine heiße Spur:

SELECT convert_to('§', 'UTF8');

 convert_to 
════════════
 \xc2a7
(1 row)

Wenn man ALTER ROLE ... PASSWORD '§' verwendet, wird das Paßwort ins Datebank-Encoding umgewandelt (hoffentlich UTF8) und so gehasht und gespeichert. Wenn man sich am Client authentisiert, werden die Bytes verwendet, die man dem Client füttert.

Also gehen zwar grundsätzlich alle Zeichen, es kann aber eine gute Idee sein, sich auf ASCII-Zeichen zu beschränken.

1 „Gefällt mir“

Noch etwas Interessantes zum Ausprobieren: in cmd.exe sich mit psql als Superuser an die Datenbank verbinden und mit

\password username

das Paßwort des Users ändern. Dann einen Verbindungsaufbau mit diesem User versuchen:

\connect - username

Wenn pg_hba.conf entsprechend konfiguriert ist, sollte jetzt das Paßwort abgefragt werden. Wenn der Verbindungsaufbau klappt, obwohl das Paßwort einen § enthält, dann liegt es wirklich am Zeichensatz, wie oben beschrieben.

1 „Gefällt mir“