En el post anterior, explicaba cómo podíamos cargarnos el usuario root de mysql para crear otro usuario que fuese el administrador general. Con esto con seguíamos que el posible atacante necesitase adivinar, además de la clave, el nombre de usuario. Esto también puede plantearnos a nosotros un problema, que es que no nos acordemos del nombre de usuario que habíamos puesto.
Es lo que me ha pasado a mi hoy, que he ido a acceder y no me acordaba, no se si de la clave o del nombre de usuario. Pero no es para alarmarse, gracias a estos sencillos pasos es posible acceder a MySQL con todos los privilegios sin especificar contraseña.
Lo único que necesitamos es ser root, para poder detener el servicio MySQL y arrancarlo con la opción –skip-grant-tables:
spurs:~# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.spurs:~# mysqld –skip-grant-tables -user=root &
[1] 11875
spurs:~# 081120 18:47:21 [Warning] Ignoring user change to ‘ser=root’ because the user was set to ‘mysql’ earlier on the command line081120 18:47:21 InnoDB: Started; log sequence number 0 43655
081120 18:47:21 [Note] mysqld: ready for connections.
Version: ’5.0.32-Debian_7etch8-log’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 Debian etch distributionspurs:~#
spurs:~# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.32-Debian_7etch8-log Debian etch distributionType ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>UPDATE mysql.user SET Password=PASSWORD(‘nuevoclave’) WHERE user=’root’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> exit
Bye
spurs:~# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld081120 18:48:40 [Note] mysqld: Normal shutdown081120 18:48:42 InnoDB: Starting shutdown…
081120 18:48:44 InnoDB: Shutdown completed; log sequence number 0 43655
081120 18:48:44 [Note] mysqld: Shutdown complete.
[1]+ Done mysqld –skip-grant-tables -user=rootspurs:~# /etc/init.d/mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Como veis, lo único que hemos hecho es detener el servicio y arrancarlo en un modo no seguro el tiempo justo para poder cambiarle la clave al usuario y luego, volverlo a detener y arrancar en modo normal.















