wie erstelle ich einen mySQL-Benutzer mit dem hash('sha256', $salt . $Passwort)?
Ich muss etwas fehlen.
Ich will eine Datenbank einrichten-Benutzerkonto auswählen-nur Transaktionen, sondern auch mysql ist nicht lassen Sie mich wählen Sie die hash-Methode, für die ein Kennwort für ein Benutzerkonto erstellen.
dies fehlschlägt:
GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'
IDENTIFIED BY hash('sha256', 'salted-myfakelongrandompasswordstring');
ERROR 1064 (42000): Sie haben einen Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrer MySQL-server-version für den richtigen syntax in der Nähe', hash('sha256', 'gesalzen-myfakelongrandompasswordstring')' at line 1
dieser übergibt:
GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'
IDENTIFIED BY 'salted-myfakelongrandompasswordstring';
Überprüfte ich die phpinfo-Seite und den sha256-hash-engine ist bereits aktiviert.
gibt es eine Möglichkeit, ändern Sie die Standard-hashing-Algorithmus für mysql, oder ist die syntax einfach falsch auf meinem SQL?
InformationsquelleAutor m42 | 2009-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, sollten Sie nicht verwenden Sie Ihre eigenen Passwort-hashing für die MySQL-Authentifizierung.
MySQL verwendet seine eigene Kennwort-hashing-Funktion (
PASSWORD()
), die erzeugt eine 41-byte hex-string (basierend auf Anwendung SHA1, um die Eingaben zweimal). Leider ist Salz nicht verwendet.Wenn Sie waren in der Lage zu verwenden
GRANT
in der Art und Weise, die Sie zeigen, in Ihre Frage, dann MySQL anwenden würde, seinePASSWORD()
Funktion der string-Ausgabe deshash()
Funktion. Nachher, wenn Sie sich anmelden wollen, müssten Sie geben Sie die 256-bit-Hashwert Ihres Kennworts, für die er mit dem übereinstimmen, was in der MySQL-Datenbank-Authentifizierung.Auch MySQL unterstützt die
SHA2()
Familie von hash-Funktionen von MySQL 6.0.5.Den
hash()
- Funktion ist etwas, das Sie wahrscheinlich erinnern von PHP. Es ist nicht Bestandteil von MySQL.update: ich besuchte die MySQL-Konferenz in dieser Woche und fand heraus, dass Sie völlig verändern Ihre roadmap für zukünftige Produkt-version zahlen. Die
SHA2()
Funktion ist derzeit Teil des MySQL-source, aber es ist unbestimmt, welche Produkt-version entspricht. Außerdem müssen Sie die MySQL gebaut mit OpenSSL/YaSSL-Unterstützung, fürSHA2()
zu arbeiten.Re Ihr Kommentar: in der Regel MySQL-Authentifizierung ist völlig getrennt von der Benutzerkonto-Authentifizierung in einem web-app (diese ist die beste Praxis aus mehreren Gründen).
Ja, müssen Sie, um fest die Benutzername/Kennwort für die MySQL-Authentifizierung für die web-app. Könnte sein, aber noch besser wäre eine config-Datei. Natürlich, legen Sie diese außerhalb des web-root.
Wenn ein Benutzer muss sich anmelden, berechnen die
hash()
Ihr Passwort eingeben, kombiniert mit der Salz Wert auf den Eintrag für Ihr Konto. Dann vergleichen Sie diesen mit dem hash in der Datenbank gespeichert. In pseudocode:InformationsquelleAutor Bill Karwin
Diese Dokumentation Seite scheint zu zeigen, dass sha256 ist nicht implementiert in MySQL:
Patch-Informationen: bugs.mysql.com/bug.php?id=13174
InformationsquelleAutor Assaf Lavie