J'ai créé un utilisateur ... mais j'ai oublié le mot de passe
mysql> créer l'utilisateur 'blayo' @ '%' identifié par 'right';
Quel outil de ligne de commande Linux peut crypter le mot de passe de la même manière que mysql 5.5?
mysql> sélectionnez Mot de passe, Utilisateur dans mysql.user ------------------------------------------ + ------- + * 920018161824B14A1067A69626595E68CB8284CB | blayo |
... pour être sûr d'utiliser le bon
$ tool right * 920018161824B14A1067A69626595E68CB8284CB
password
mysql
encryption
Philippe Blayo
la source
la source
blayo
? C'est définitivement plus rapide que de parcourir des milliers de milliards de combinaisons de caractères possibles pour trouver la bonne.Réponses:
Eh bien, la façon la plus banale (peut-être de tricher ) serait d'exécuter:
Cela produira un mot de passe en utilisant le schéma de hachage de mot de passe utilisé par votre version de mysql. [ EDIT : ajout de -NB, qui supprime les noms des colonnes et l'art du tableau ascii.]
la source
mysql
pour le cacher de l'historique bash et vous pouvez utiliserSET sql_log_off=ON;
juste avant leSELECT ...
pour le cacher du journal MySQL..mysql_history
) en ignorant toutes les instructions correspondant*PASSWORD*
et 2. côté serveur pour plusieurs stmts (saufSELECT
). Voir: Manuel MySQL 5.7 - Mots de passe et journalisation et MySQL 5.7 - Manuel - Journalisation client mysqlQuelques one-liners:
MySQL (peut nécessiter que vous ajoutiez -u (utilisateur) -p):
Python :
Perl :
PHP :
Rubis :
Toutes les sorties:
la source
Cela me fait toujours penser que MySQL ne dérange pas de masquer les mots de passe sur la ligne de commande et dans les journaux. Et c'est la seule raison pour laquelle j'ajoute une réponse plutôt que de simplement commenter la réponse @Gilles.
Donc, bien sûr, vous pouvez simplement vous connecter à MySQL en tant qu'administrateur et définir un nouveau mot de passe pour votre utilisateur blayo, comme l'a suggéré @patrix.
Cependant, la façon standard de le faire est d'utiliser la fonction password () de MySQL, qui prend un mot de passe en texte brut comme argument (sérieusement?).
Si vous faites cela, vous laissez la version en clair du mot de passe de votre utilisateur MySQL dans votre historique bash et dans vos journaux MySQL, pour une récupération facile plus tard par quiconque parvient à accéder à ces fichiers journaux.
Ne serait-il pas préférable d'avoir un petit utilitaire qui demanderait le mot de passe, sans l'écho à l'écran ou à vos journaux, puis vous fournirait le hachage compatible MySQL résultant?
Donc, en modifiant un peu la réponse de @ Gilles, que diriez-vous d'un petit script shell qui utilise Python, comme le suivant. Vous pouvez facilement modifier cela pour exécuter une instruction SQL sur votre base de données MySQL pour définir le mot de passe en une seule fois. Mais même sans aller aussi loin, copiez et collez simplement le hachage résultant dans une instruction SQL pour mettre à jour la table des utilisateurs:
la source
<!-- language: lang-bsh -->
ligne). Pratique! Je l'aime. Merci!Un de plus en utilisant le shell:
Explication:
echo -n
imprimer sans saut de lignesha1sum
premier SHA1xxd -r -p
décoiffer le hachagesha1sum
deuxième SHA1tr '[a-z]' '[A-Z]'
convertir en majusculesawk '{print "*" $1}'
ajouter un interligne *Plus de détails:
Entre 2. et 3. une
awk '{printf "%s", $1}'
étape facultative pourrait être introduite pour la suppression des sauts de ligne et des traits d'union. Mais xxd les ignorera quand même (Merci à dave_thompson_085).De plus, les étapes 5 et 6 peuvent être effectuées
{print "*" toupper($1)}
simultanément en les remplaçant par (Merci à dave_thompson_085).la source
awk
peut faire la majuscule, et délivrer en sortie une ligne incomplète (dernier) à la borne est incovenient:.. | sha1sum | awk '{print "*" toupper($1)}'
. Et vous n'avez pas à vous soucier de la NL et même du trait d'unionxxd -r -p
, ils sont ignorés.Le hachage est sha1 (sha1 (mot de passe)) . Puisqu'il n'y a pas de sel (ce qui est un grave défaut de sécurité), vous pouvez rechercher le hachage dans une table .
Avec seulement les outils POSIX plus
sha1sum
de GNU coreutils ou BusyBox, sha1 (sha1 (mot de passe)) est ennuyeux à calculer car lasha1sum
commande imprime le résumé en hexadécimal et il n'y a pas d'outil standard pour convertir en binaire.Python a des résumés standard dans ses bibliothèques standard, c'est donc un simple liner.
Ou avec le mot de passe à l'intérieur du one-liner:
la source
read
shell intégré pour lire une ligne; exécutez d'stty echo
abord si vous souhaitez désactiver l'écho etssty +echo
le réactiver. En Python, vous pouvez utiliser legetpass
module.Si vous avez créé un utilisateur et oublié le mot de passe, c'est ce que vous devez faire et c'est plus facile.
Cela m'est également arrivé une douzaine de fois alors que je faisais 10 milliards de choses à la fois. La meilleure façon de récupérer mon mot de passe était:
arrêté le serveur mysql complètement en premier
a publié mysqld_safe --skip-grant-tables &
puis je me suis connecté en tant que root sans émettre de mot de passe, juste mysql -u mysql-user (il vous laisse entrer après mysqld_safe)
puis allez dans la table mysql> user et mettez à jour le mot de passe de l'utilisateur
puis revenez en arrière et redémarrez mysql
voir si cela fonctionne et faites le nous savoir.
la source
Un autre utilisant la coquille
... qui produit:
la source
MySQL 4.1+ utilise le double SHA1
Cet algorithme peut être facilement porté dans d'autres langues. Une différence est que les hachages de mot de passe dans le "mot de passe sélectionné" commencent toujours par un caractère "*".
la source