He creado un usuario ... pero olvidé la contraseña
mysql> crea el usuario 'blayo' @ '%' identificado por 'right';
¿Qué herramienta de línea de comandos de Linux puede cifrar la contraseña de la misma manera que lo hace mysql 5.5?
mysql> seleccione Contraseña, Usuario de mysql.user ------------------------------------------ + ------- + * 920018161824B14A1067A69626595E68CB8284CB | blayo |
... para estar seguro de que uso el correcto
$ herramienta derecha * 920018161824B14A1067A69626595E68CB8284CB
password
mysql
encryption
Philippe Blayo
fuente
fuente
blayo
? Eso es definitivamente más rápido que correr a través de billones de combinaciones de personajes posibles para encontrar la correcta.Respuestas:
Bueno, la forma trivial (tal vez trampa ) sería correr:
Esto producirá una contraseña usando cualquier esquema de hash de contraseña que use su versión de mysql. [ EDITAR : agregado -NB, que elimina los nombres de columna y el arte de la tabla ascii.]
fuente
mysql
de ocultarlo del historial de bash y puede usarloSET sql_log_off=ON;
justo antesSELECT ...
para ocultarlo del registro de MySQL..mysql_history
) ignorando todas las declaraciones que coinciden*PASSWORD*
y 2. el lado del servidor para varios stmts (exceptoSELECT
). Ver: MySQL 5.7 Manual - Contraseñas y registro y MySQL 5.7 - Manual - mysql Client LoggingAlgunas frases:
MySQL (puede requerir que agregue -u (usuario) -p):
Python :
Perl :
PHP :
Rubí :
Toda la salida:
fuente
Todavía me sorprende que MySQL no se moleste en ofuscar contraseñas en la línea de comandos y en los registros. Y esa es la única razón por la que agrego una respuesta en lugar de solo comentar la respuesta de @Gilles.
Entonces, por supuesto, puede iniciar sesión en MySQL como administrador y establecer una nueva contraseña para su usuario de blayo, como sugirió @patrix.
Sin embargo, la forma estándar de hacerlo es mediante el uso de la función de contraseña () de MySQL, que toma una contraseña de texto sin formato como argumento (¿en serio?).
Si hace eso, deja la versión de texto sin formato de la contraseña de su usuario de MySQL en su historial de bash y en sus registros de MySQL, para que la recupere fácilmente más adelante quienquiera que logre acceder a esos archivos de registro.
¿No sería mejor tener una pequeña utilidad que solicite la contraseña, sin hacerla eco en la pantalla o en los registros, y luego proporcionarle el hash resultante compatible con MySQL?
Entonces, modificando la respuesta de @ Gilles solo un poco, ¿qué tal un pequeño script de shell que usa Python, como el siguiente? Puede modificar esto fácilmente para ejecutar una instrucción SQL en su base de datos MySQL para establecer la contraseña de una vez. Pero incluso sin ir tan lejos, simplemente copie y pegue el hash resultante en una instrucción SQL para actualizar la tabla de usuarios:
fuente
<!-- language: lang-bsh -->
línea). ¡Práctico! Me gusta. ¡Gracias!Uno más usando el shell:
Explicación:
echo -n
imprimir sin salto de líneasha1sum
primer SHA1xxd -r -p
deshacer el hashsha1sum
segundo SHA1tr '[a-z]' '[A-Z]'
convertir a mayúsculasawk '{print "*" $1}'
agregar líder *Más detalles:
Entre 2. y 3. se
awk '{printf "%s", $1}'
podría insertar un paso opcional para la eliminación de líneas nuevas y guiones. Pero xxd los ignorará de todos modos (Gracias a dave_thompson_085).Además, los pasos 5 y 6 se pueden hacer de inmediato reemplazándolos con
{print "*" toupper($1)}
(Gracias a dave_thompson_085).fuente
awk
puede hacer el mayúscula, y dar salida a una (última) línea incompleta a la terminal es un inconveniente:.. | sha1sum | awk '{print "*" toupper($1)}'
. Y no necesita preocuparse por la NL e incluso el guión en elxxd -r -p
, son ignorados.El hash es sha1 (sha1 (contraseña)) . Como no hay sal (que es un grave defecto de seguridad), puede buscar el hash en una tabla .
Con solo las herramientas POSIX plus
sha1sum
de GNU coreutils o BusyBox, es molesto calcular sha1 (sha1 (contraseña)) porque elsha1sum
comando imprime el resumen en hexadecimal y no hay una herramienta estándar para convertir a binario.Python tiene resúmenes estándar en sus bibliotecas estándar, por lo que es una línea simple.
O con la contraseña dentro del one-liner:
fuente
read
shell incorporado para leer una línea; ejecutestty echo
primero si desea desactivar el eco yssty +echo
volver a activarlo. En Python, puedes usar elgetpass
módulo.Si creó un usuario y olvidó la contraseña, esto es lo que debe hacer y es más fácil.
Esto también me sucedió una docena de veces mientras hacía 10 mil millones de cosas a la vez. La mejor manera de recuperar mi contraseña fue:
detuvo el servidor mysql completamente primero
emitió mysqld_safe --skip-grant-tables &
luego inicié sesión como root sin emitir una contraseña, solo mysql -u mysql-user (te deja entrar después de mysqld_safe)
luego vaya a la tabla mysql> user y actualice la contraseña para el usuario
luego regrese y reinicie mysql
A ver si eso funciona y háganos saber.
fuente
Otro usando el caparazón
... que produce:
fuente
MySQL 4.1+ usa SHA1 doble
Este algoritmo se puede portar fácilmente a otros idiomas. La diferencia es que los hashes de contraseña en la "contraseña seleccionada" siempre comienzan con un carácter "*".
fuente