miércoles, 14 de julio de 2010

Saltar root en MySQL para Linux/Windows


Estimados

Despues de haber "bajado" la cuenta de root en distros de linux como la cuenta de windows y otras cosas de seguridad; quiero traerles este nuevo tips que nos permitira cambiar la clave del super usuario "root" en MySQL para Linux.

La cuenta root se encuentra en la tabla "User" de la base de datos mysql en dicho SGBD (Sistema gestor de base de datos).

Les detallo el procedimiento para Linux: -------------------------------------------------------------------

Paso # 1: Detener el servicio mysql
# /etc/init.d/mysql stop

Paso # 2: Iniciar el servidor MySQL sin contraseña:
# mysqld_safe --skip-grant-tables


Paso # 3: Conectar al servidor mysql usando el cliente mysql: (IMPORTANTE: En una nueva shell)
# mysql -u root

Paso # 4: Configurar una nueva contraseña del servidor MySQL para el usuario root:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

Paso # 5: Detener el servidor MySQL:
# /etc/init.d/mysql stop

Paso # 6: Iniciar el servidor MySQL y verificar la contraseña:
# /etc/init.d/mysql start
# mysql -u root -p

Tener en cuenta que este procedimiento es para sistemas linux. Para el MySQL en Windows es el que sigue:

-------------------------------------------------------------------

1. Abrir el administrador de procesos de Windows (services.msc)

2. Detener el servicio de MySQL (click derecho — Detener)

3. Abrir una ventana de CMD, consola de Windows, o Pantalla de DOS (como le quieran llamar) y situarse en la carpeta donde esta instalado el MySQL (generalmente es en la carpeta BIN de la carpeta de instalacion) y desde la cual, generalmente se ejecuta MySQL en modo consola

4. Escribir la siguiente linea “mysqld-nt –skip-grant-tables” cuando hagan esto, la pantalla del CMD se vera como que esta haciendo nada o algo… ya saben como es Windows… la cosa es que esa ventana quedará “inutilizable” dejenla así y abran otra ventana de CMD. (Esto pasa en linux tambien).

5. En la nueva ventana del CMD ir de nuevo a la carpeta donde esta instalado MySQL y acceder como root (si, ya se que perdieron la contraseña…) solo escriban “mysql -u root” y listo! accedemos sin contraseña… no se precipiten, aun no hemos terminado.

6. Seleccionamos la base de datos (use mysql) y después procedemos con la tecnica milenaria de crear a otro root, con la siguiente linea “INSERT INTO user VALUES (‘localhost’, ‘roottemporal’, ”,’Y', ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ”, ”, ”, ”, ’0′, ’0′, ’0′,’0′)” OJO: Deben ser 26 ‘Y’, 4 espacios en vacio”, y 4 Ceros ’0′… Con esto estamos creando, para el localhost, un usuario roottemporal, sin contraseña y con todos los permisos posibles.

7. Con el administrador de tareas de Windows bajamos el proceso mysqld-nt (que se esta ejecutando en la consola CMD que parece que no hace nada) y además cerramos amablemente la terminal MySQL donde estuvimos trabajando con un QUIT, si no se cierra bajenla con el administrador de tareas también.

8 Arrancamos de nuevo el servicio de MySQL con el administrador de servicios (services.msc)

9. Desde una ventana de CMD, Ingresamos a MySQL con el usuario roottemporal sin password

10. Seleccionamos la base de datos mysql (use mysql)

11. Ejecutamos la instrucción ” UPDATE user SET Password=PASSWORD(‘la_nueva_contraseña’) WHERE User=’root’ ” (importante respetar las mayusculas de las palabras…)

12. Ejecutamos ” flush privileges ” (si no hacen esto será como no haber hecho nada…)

13. Sonrian y relajense, en este punto ya hemos reiniciado la contraseña del root, asi que pueden salir de la consola, y acceder con el MySQL Administrator y gestionar lo demás en modo gráfico, o bien salir de la consola y entrar de nuevo con el usuario root y la contraseña que acaban de crear… en ambos casos es importante eliminar al usuario roottemporal, pues tiene calidad de root y además no tiene contraseña… esto lo pueden desde la consola con la instrucción: “delete from user where user=’roottemporal’;” y después la instrucción “flush privileges;” o desde el modo gráfico del Administrator, vayan a User Administration, click derecho en el usuario roottemporal y delete user.

_________________________________________________________________

Estos dos procedimientos los he probado y funcionan perfectamente en los dos tipos de OS. Espero haber cooperado a la falta de seguridad en los sistemas informaticos.

Atte.

Miguel Angel Peñate

No hay comentarios: