systemadmin.es > DBA > Permitir acceso con cualquier usuario y contraseña a MySQL

Permitir acceso con cualquier usuario y contraseña a MySQL

Cuando aparece un problema en un MySQL, aúnque sea de desarrollo, a todo el mundo le entre la prisa. En este caso vamos a suponer una corrupción de la tabla de usuarios (mysql.user)

Como decíamos lo prioritario es restablecer el servicio para luego dejarlo como estuviese antes del incidente.

$  mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Para poder restablecer el servicio, si solo ha afectado a la tabla que decíamos de usuarios, podemos levantar el MySQL para que acepte cualquier usuario con cualquier contraseña a cualquier base de datos.

Evidentemente, esta es una solución temporal que no puede aplicarse indistintamente a cualquier entorno. Suponiendo que se trate de un entorno de desarrollo de un proyecto en concreto no debería existir problema en ello.

Para realizar esto primero de todo deberemos buscar como se arranca el MySQL:

$ ps -fea | grep mysql
noc      17786 17634  0 08:34 pts/6    00:00:00 grep mysql
root     18942 17927  0 Apr14 pts/3    00:00:00 mysql
root     27852     1  0 Apr14 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/mysql --pid-file=/var/lib/mysql/lamp-tr22.pid
mysql    27881 27852  0 Apr14 ?        00:04:45 /usr/sbin/mysqld --basedir=/ --datadir=/var/mysql --user=mysql --pid-file=/var/lib/mysql/lamp-tr22.pid --skip-external-locking --port=3306

A continuación añadimos a la cadena del daemon mysqld la opción –skip-grant-tables. Esta opción indica a MySQL que arranque el servicio sin ningún tipo de sistema de privilegios. En el caso anterior ejecutaríamos:

/usr/sbin/mysqld --basedir=/ --datadir=/var/mysql --user=mysql --pid-file=/var/lib/mysql/lamp-tr22.pid --skip-external-locking --port=3306 --skip-grant-tables

Con esto todo vuelve a funcionar pero con todos conectando como dba. Una vez restaurada la tabla de privilegios, por ejemplo de backup, podemos simplemente ejecutar flush-privileges para cargar los privilegios:

$ mysqladmin flush-privileges -p
Enter password:

Deja un comentario:

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