Ich habe MySQL 5.5 auf einer neuen VM installiert, auf der Ubuntu 14 LTS läuft apt-get
. Während der Installation stelle ich ein Wurzel Benutzerkennwort, das von einem Kennwortmanager generiert wird. Nach der Installation konnte ich auf keine Funktionen als MySQL-Root-Benutzer zugreifen:
<user>@<hostname>:~$ mysql -u root -p
Enter password: <root user pw set at installation>
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Ich dachte, dass etwas falsch lief, als ich das root-Passwort setzte
<user>@<hostname>:~$ sudo dpkg-reconfigure mysql-server-5.5
um das root-Passwort zurückzusetzen, obwohl ich es auf das gleiche Passwort "zurücksetzt". Ich erhielt das gleiche weiter Access denied
Error.
Dann setze ich das root-Passwort mit derselben Methode erneut auf etwas kürzeres und leicht typisierbares (also schwaches) Zeichen, das nur alphanumerische Zeichen enthält. Das hat funktioniert! Ich kann jetzt als Root-Benutzer auf MySQL-Funktionen zugreifen.
Der einzige Unterschied scheint die Komplexität des Passworts zu sein. Das ursprüngliche sichere Kennwort bestand aus 18 Zeichen und enthielt Satzzeichen wie ^ \:! Usw. Nur ASCII und keine Leerzeichen.
Ist dieses Kennwort gegen eine Regel verstoßen, die MySQL-Kennwörter einhalten müssen, entweder in Bezug auf Länge oder Zeichensätze? Ich habe gesucht, und ich habe keine Hinweise auf solche Einschränkungen gefunden, die meiner Meinung nach gut veröffentlicht wären. Wenn nicht das, was hätte das Problem sonst noch haben können?
Vielen Dank!
quelle
127.0.0.1
stattdessen mit einer Syntax wie ..............mysql -u root -p -h 127.0.0.1
und dann sehen was passiert. Vielleicht derlocalhost
ist nicht erlaubt pro--skip-name-resolve
gesetzt sein oder nur eine explizite Regel haben, die es root nur erlaubt, eine Verbindung von der127.0.0.1
Wirt.Antworten:
Es gibt keine Einschränkungen für MySQL-Passwörter, die von der MySQL-Software auferlegt werden. Die Datenbank kann so lang sein, wie Sie möchten, und so komplex, wie Sie möchten. Es gibt jedoch einige Einschränkungen.
Manchmal interpretiert die Shell oder ein Skript oder etwas das Kennwort, bevor es an die Datenbank übergeben wird. Wenn Sonderzeichen vorhanden sind, werden sie möglicherweise entstellt. Wenn Ihr Kennwort beispielsweise "*" lautet und Sie es über die Befehlszeile übergeben haben, interpretiert die Shell dieses als Platzhalterzeichen und füllt eine Reihe von Dateinamen aus. Solche Sonderzeichen müssen möglicherweise mit einem umgekehrten Schrägstrich ("\") gekennzeichnet werden.
Eine weitere Einschränkung: Wenn Ihr Kennwort Nicht-ASCII-Zeichen (beispielsweise Unicode) enthalten sollte, muss die Datenbank, die mit der Datenbank verbunden ist, der Datenbank mitteilen, dass dies kommt. MySQL setzt ASCII voraus und muss normalerweise anders informiert werden.
Ich bin mir nicht sicher, ob einer der Punkte auf Ihre Situation zutrifft. Aber ich dachte mir, ich würde dir auf die gestellte Frage eine Antwort geben.
quelle