consulta, crackear psw MYSQL local.

Iniciado por freedert, 21 Enero 2010, 04:59 AM

0 Miembros y 1 Visitante están viendo este tema.

freedert

Buenas! saludos como nuevo usuario del foro.

Mi consulta es la siguiente.
Tengo una DB en MySQL instalada localmente en esta maquina, necesito editar unos valores dentro de la misma que mas específicamente están alojados en unos archivos MYD y MYI. El problema es que al tratar de conectarme a esta DB con el usuario root y psw root como figura en el my.ini del MySQL me da error de acceso.

Esta sql se instala con una aplicación de un software, es decir, no soy yo quien setea el pass o los permisos.

necesito, o conseguir los datos de acceso a esta DB o poder de alguna manera editar estos archivos del MySQL, cualquiera de las dos cosas me sirve pero no puedo lograrlo.

Agradezco cualquier idea o ayuda y díganme si necesitan que les mande algún dato o los archivos en si.

gracias!!
Diego

AlbertoBSD

Como te conectas al server?

mysql -h host -u root -p


Saludos




Mover a foro de DB
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

freedert

Buenas gracais por responder, me conecto con un software generico para administrar DBs, igualmente por si las dudas (falto aclarar que todo esto es bajo windows). Probe conectando desde el CMD en la carpeta MYSQL/bin usando el comando como vos ejemplificaste y me da lo siguiente:

mysql -h localhost -u root -p
ERROR: 1045: Acceso negado para usuario: "root@LocalHost" <Usando clave: SI>

usando como clave "root". Lo raro es que si en el archivo my.ini esta especificado que la clave y usuario son root no deberia poder entrar asi?

salu2

braulio--

Estás seguro de que tiene contraseña ?
mysql -h localhost -u root

freedert

Cita de: braulio23 en 21 Enero 2010, 16:41 PM
Estás seguro de que tiene contraseña ?
mysql -h localhost -u root

Tambien probe eso pero salta lo mismo, acceso denegado.

si quieren les puedo pasar el exe que isntala el server bajo win y crea la base de datos, pesa 7 megas.

^Tifa^

Citarusando como clave "root". Lo raro es que si en el archivo my.ini esta especificado que la clave y usuario son root no deberia poder entrar asi?

No del todo, la contrasena que vez algunas veces especificada en my.ini sirve de referencia para el usuario que se descarga un software nuevo o desconoce la contrasena de root de la DB entonces el DBA edita este archivo, para que el usuario que quiera logearse como root al motor sepa cual es la clave de root (siendo la clave de root la que se asigno a MySQL durante la instalacion). Pero no es que tu le pones una clave a este archivo, y automaticamente MySQL asigna esa clave a root, no... es solo una referencia digase para que otro usuario sepa cual es la contrasena de root. No es algo obligatorio de colocar como veras, es solo opcional.

Hay formas de recuperar contrasenas de root perdida en MySQL tanto en Windows como en sistemas Unix/Linux, pero porque al que seteo la contrasena no le especificas que quieres editar esos archivos? si otra persona esta siendo encargada de la DB porque quieres hacer algo tu que podrias solicitarle a esa persona tu problema????

freedert

Gracias por responder, no le pido el acceso primero porque no se donde estará esta persona que programo este soft, y segundo porque en todo caso no me lo daría ya que es un software de su propiedad (el cual, en realidad le compre y me salió bastante caro por cierto) y quiero poder editar esos archivos para usar otra aplicación en esa DB.

salu2

^Tifa^

Pues muy mal por la persona que te vendio el software, el o ella debio indicar en my.ini cual era la contraseña de root que el o ella le otorgo al motor, aunque reconozco que esto lo hacen para obligarte a ti a que los llame para cualquier soporte o consulta y asi cobrarte dinero por dicho servicio. Pero en fin, aunque desde un inicio vi en tu mensaje una manera de querer obtener algo al cual no tienes acceso, por eso me he negado un poco a ayudar puesto que no ayudo ni opino cuando veo intenciones de hackeo no positivo.

Pero, hare una excepcion a algo donde no suelo ayudar, no es para nada recomendable que tu manualmente edites ningun archivo datafile digase nada de editar los archivos terminados en MYD ni ninguno de los archivos indices MYI son archivos binarios, generados por el motor mientras realizes transaciones, si tu manualmente editas aunque sea 1 solo caracter de dicho archivos.. podrias danar la data completa y de paso perder dicha tabla, por ende procura no hacer cambios manuales ya que no sera nada satisfactorio ciertamente.

Hay varias maneras de recobrar contrasenas olvidades de root en MySQL, la mas sencilla es la que te dare ahora, sigue estos pasos:

1 - Deten el proceso de MySQL. Vete a Cpanel, Services y ahi busca el servicio MySQL y paralo.

2 - Abre un CMD de Windows (Si esa terminal negra que se llama MS-DOS o algo asi).

3 - Dentro del CMD vete al directorio bin de MySQL, si tienes la carpeta de MySQL en C, vete con el comando cd asi:

cd C:\MySQL\bin

si MySQL esta en C:\Programas pos ya sabes sustituye la ruta anterior.

4 - Cuando en el CMD te hayas movilizado  a la carpeta bin de MySQL ejecuta este comando:
mysqld.exe -u root --skip-grant-tables

5 - No cierres el CMD donde ejecutaste lo anterior si quieres minimizalo es opcion tuya, ahora abre otro CMD nuevo y como el caso anterior en este nuevo CMD dirigete a la carpeta bin de MySQL con el comando   cd

6 - Cuando en el nuevo CMD estes dentro de la carpeta bin de MySQL escribe en el prompt  mysql  y pulsa Enter. Deberas logearte sin problemas al motor MySQL.

7 - Ya logeado en MySQL escribe lo siguiente:

mysql> select user from mysql.user;

Te lanzara cuales usuarios existen para logearse al motor, verificate que exista 'root' (Ya que por seguridad mas que todo, hay personas que sustituyen la cuenta  administrador 'root' por otro nombre de usuario por ende hay que asegurarse que existe 'root' y no otro usuario como administrador de MySQL)

Si vez que existe una cuenta de administrador con el usuario 'root' perfecto sino existe la cuenta 'root' pero si existe otro usuario como administrador, sencillamente sustituye el nombre 'root' por el nombre de usuario admin existente en la consulta SQL siguiente:

mysql> update mysql.user set password = password('TU_NUEVA_CONTRASENA') where user = 'root';

Luego :

mysql> flush privileges;

Ya hecho lo anterior, sales de la instancia MySQL con la palabra exit
Y ya puedes cerrar el primer CMD (El que esta ejecutando mysqld.exe skip-grant..)

Luego que hayas cerrado los 2 CMD vete a servicios de WIndows y inicia el servidor MySQL, cuando inicie logeate con la nueva contraseña de root.

N4X

eso que explicas no es una opción un tanto permisiva?

o funciona bajo ciertas restricciones?

es decir...

teniendo una shell de un server de un tercero yo, bajo esos comandos, soy capaz de obtener un acceso total no?

seguramente habrá peros digo yo :P

^Tifa^

#9
Ahhhh por eso no queria decir como se hacia ..... no quiero que otro usuario haga lo anterior para violar cosas que no debe, en algun servidor fisico donde tenga acceso con algun usuario que tenga permisos de Administrador.

Citar
eso que explicas no es una opción un tanto permisiva?

o funciona bajo ciertas restricciones?

Lo anterior funciona siempre y cuando la opcion 'skip-grant-tables' este compilada como 'SI' dentro del motor MySQL. Ahora como hablamos de un MySQL instalado en Windows, como aca no se compila sino que se instala, por defecto en MySQL la opcion 'skip-grant-tables' viene activada  ;)  por lo que bajo sistemas Windows... me temo que si, lo anterior aplica siempre. Ahora bajo sistemas Unix o Linux donde tienes la posibilidad de compilar el fuente de MySQL y tu lo compilas con las opciones que quieres y no quieres, podria lo anterior variar. Ya que puedo compilar mi motor con dicha opcion desactivada por lo cual no aplicaria intentar iniciar el motor con la opcion skip-grant-tables... y en ese caso entonces tendria yo que hacer otro procedimiento para recuperar la contraseña de root en un sistema Unix/Linux el cual no explayare aqui porque como dije, no me gusta aportar a cosas que se que son negativas y seran utilizadas para hacer danio.