22 de Noviembre, 2008

FLUSH PRIVILEGES!

Estoy casi seguro al 100% que siempre que he actualizado los datos de acceso de algún usuario en MySQL, ha fallado. Además, siempre por lo mismo: no recuerdo hacer FLUSH PRIVILEGES.

Principalmente tenemos dos formas de cambiar datos de un usuario, mediante UPDATE de la tabla user en la base de datos mysql, o usando la directiva GRANT. Incluso las contraseñas se pueden cambiar con mysqladmin.

Está claro que para dar un alta, lo mejor es GRANT (aunque un oldschool SQLer como yo nunca recuerde su sintáxis :P), y para cambiar una contraseña... mysqladmin.

Pero si queremos modificar una cuenta de usuario que solo funciona para el acceso cuando conectamos a un nombre de máquina contreto (por ejemplo: dbuser@servidor.local), para que sea general (desde cualquier ubicación), no hay más que entrar al UPDATE, que no hace un FLUSH TABLES implícito como el resto de mecanismos, y por lo tanto no recarga las tablas de acceso (y te tiras un buen rato atascado porque los cambios que haces parecen no funcionar :P).

Siguiendo con nuestro ejemplo:

mysql> use mysql;
mysql> UPDATE user set Host='%' where User='dbuser' and Host='servidor.local';
mysql> FLUSH PRIVILEGES;

Es fácil, no tiene pérdida, y espero que con esta anotación no se me vuelva a olvidar el FLUSH PRIVILEGES, que al final, cuando lo recuerdas, se te queda cara de tonto por el rato que has perdido porque esto no funciona ;).

Anotación por Juan J. Martínez, clasificada en: mysql.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: