lunes, octubre 25, 2010

Conceder y quitar privilegios en MySQL

La función GRANT es la utilizada para brindar privilegios:
GRANT privilegios
ON base/tabla
TO usuario [IDENTIFIED by ´contraseña´]
[WITH GRANT OPTION];

La opción WITH GRANT OPTION brinda al usuario la facultad de darle a otros usuarios sus mismos privilegios

Con el siguiente comando daríamos todos los permisos (excepto WITH GRANT OPTION) a un usuario sobre una base de datos específica:

GRANT ALL ON BD.* TO USER@localhost IDENTIFIED BY "PASSWORD";

Para dar todos los permisos, incluido el WITH GRANT OPTION, debe de indicarse expresamente:

GRANT ALL ON BD.* TO USER@localhost IDENTIFIED BY "PASSWORD" WITH GRANT OPTION;
Importante mencionar, que esto no es aconsejable de hacer pues no es seguro, solo el usuario administrador es el que debe agregar o eliminar privilegios.

De la siguiente manera solo le daríamos permiso de algunos comandos sobre la bd, importante mencionar, que el usuario no podría crear nuevas tablas ni nuevas bases de datos:

GRANT select,insert,update,delete ON BD.* TO USER@localhost IDENTIFIED BY "PASSWORD";


La función REVOKE se utiliza para retirar privilegios a los usuarios. Su sintaxis es muy similar a la de GRANT:

REVOKE privilegios
ON base/tabla
FROM usuario

Así quitaríamos todos los permisos del usuario
REVOKE ALL ON BD.* from USER@localhost


Aqui mas información sobre los Privilegios en Mysql