Veamos cómo otorgar permisos (llamados privilegios) a un usuario de la base de datos MySQL
De forma predeterminada, cuando crea un nuevo usuario de MySQL usando la sintaxis
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
el usuario no puede hacer mucho. Podemos decir que no puede hacer nada, en realidad.
No puede leer datos de ninguna base de datos existente, y mucho menos modificar los datos. Y ni siquiera puede crear una nueva base de datos.
Para hacer que un usuario haga algo, debe otorgar privilegios a ella.
Puedes hacerlo usando el GRANT
comando.
Podemos usar GRANT <permission>
, utilizando las siguientes palabras clave de permiso:
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Otorgar privilegio para crear nuevas bases de datos a un usuario
GRANT CREATE ON *.* TO '<username>'@'localhost';
Otorgar privilegios a un usuario para crear nuevas tablas en una base de datos específica
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Otorgar privilegio para leer (consultar) una base de datos específica a un usuario
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Otorgar privilegio para leer una tabla de base de datos específica a un usuario
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Otorgue privilegios para insertar, actualizar y eliminar filas en una base de datos específica para un usuario
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Otorgar privilegio para eliminar tablas en una base de datos específica a un usuario
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Otorgar privilegio para eliminar bases de datos a un usuario
GRANT DROP ON *.* TO '<username>'@'localhost';
Otorgar todos los privilegios sobre una base de datos específica a un usuario
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Otorgar todos los privilegios a un usuario
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Revocar un privilegio
Ejemplo para revocar el DROP
privilegio en <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Para revocar todos los privilegios, ejecute:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Puede visualizar los privilegios de un solo usuario ejecutando:
SHOW GRANTS FOR '<username>'@'localhost';