comment puis-je créer un utilisateur mySQL avec des hash('sha256', $salt . $mot de passe)?
Je dois être en manque de quelque chose.
Je veux mettre en place une base de données de compte d'utilisateur pour sélectionner uniquement les transactions mais mysql n'est pas de me laisser choisir la méthode de hachage d'un mot de passe sur la création d'un compte d'utilisateur.
d'échec:
GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'
IDENTIFIED BY hash('sha256', 'salted-myfakelongrandompasswordstring');
ERREUR 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de " hash('sha256', 'salé-myfakelongrandompasswordstring')' à la ligne 1
ce passe:
GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'
IDENTIFIED BY 'salted-myfakelongrandompasswordstring';
J'ai vérifié la page phpinfo et le hachage sha256 moteur est déjà activé.
est-il un moyen de modifier la valeur par défaut algorithme de hachage pour mysql, ou est la syntaxe juste incorrect sur mon SQL?
OriginalL'auteur m42 | 2009-03-28
Vous devez vous connecter pour publier un commentaire.
Non, vous ne devriez pas utiliser votre propre mot de passe de hachage pour MySQL authentification.
MySQL utilise son propre mot de passe fonction de hachage (
MOT de passe()
), qui produit une 41 octets chaîne hexadécimale (basée sur l'application d'SHA1 à l'entrée deux fois). Malheureusement, un sel n'est pas utilisé.Si vous avez été en mesure d'utiliser
GRANT
dans la manière de vous montrer dans votre question, puis MySQL appliquerait saPASSWORD()
fonction de la sortie de chaîne de lahash()
fonction. Par la suite, lorsque vous voulez vous connecter, vous devez entrer le hachage 256 bits de votre mot de passe, pour qu'il corresponde à ce qui est dans la base de données MySQL base de données d'authentification.Aussi, MySQL supporte les
SHA2()
famille de fonctions de hachage à partir de MySQL 6.0.5.La
hash()
fonction est quelque chose que vous êtes probablement se souvenir de PHP. Il ne fait pas partie de MySQL.mise à jour: j'ai assisté à la base de la Conférence de cette semaine et qu'ils sont totalement changer leur feuille de route pour les futurs numéros de version. Le
SHA2()
fonction est actuellement partie de la source de MySQL, mais il est indéterminé à ce que le produit de la version qui correspond à. Aussi, vous avez besoin de MySQL construit avec OpenSSL/YaSSL de soutien, pourSHA2()
de travail.Re votre commentaire: Généralement MySQL authentification est totalement distincte du compte de l'utilisateur de l'authentification dans une web app (c'est la meilleure pratique pour plusieurs raisons).
Oui, vous avez besoin de coder en dur le nom d'utilisateur/mot de passe pour MySQL authentification pour votre application web. Peut être, mais il serait encore mieux d'un fichier de configuration. Bien sûr, de mettre ces derniers en dehors de la racine web.
Lorsqu'un utilisateur doit se connecter, calculer la
hash()
de leur mot de passe d'entrée, combiné avec le sel valeur pour leur compte. Ensuite la comparer à la valeur de hachage stockées dans la base de données de l'utilisateur. En pseudo-code:OriginalL'auteur Bill Karwin
Ce page de documentation semble indiquer que sha256 est pas mis en œuvre dans MySQL:
Patch d'informations: bugs.mysql.com/bug.php?id=13174
OriginalL'auteur Assaf Lavie