La sentencia GRANT en MySQL se utiliza para asignar privilegios a las cuentas de usuario de MySQL. Define qué operaciones pueden realizar los usuarios en los objetos de la base de datos, como tablas y vistas, garantizando un acceso controlado a la base de datos.
Utilización
La sentencia GRANT se emplea cuando necesitas dar permisos a usuarios concretos para ejecutar determinados tipos de operaciones SQL. Ayuda a gestionar los derechos de los usuarios de forma eficaz y segura.
GRANT privileges
ON database_name.table_name
TO'user'@'host'[IDENTIFIEDBY'password'];Con la tecnología de
En esta sintaxis, privileges son los permisos concedidos, database_name.table_name especifica el ámbito, user es el nombre de usuario de MySQL y host es la ubicación desde la que se conecta el usuario. Ten en cuenta que la cláusula IDENTIFIED BY 'password' sólo es aplicable al crear un nuevo usuario. En MySQL 8.0 y versiones posteriores, normalmente se recomienda utilizar CREATE USER seguido de GRANT para la creación de usuarios y la asignación de privilegios.
Aquí, a user2 se le conceden todos los privilegios sobre toda la base de datos mydb desde el host 192.168.1.1.
3. Conceder privilegios con contraseña
GRANTSELECT,UPDATEON mydb.mytable
TO'user3'@'%'IDENTIFIEDBY'securepassword';Con la tecnología de
Esta sentencia concede privilegios a SELECT y UPDATE en mydb.mytable a user3 desde cualquier host (%), estableciendo una contraseña especificada. Utilizar % permite conexiones desde cualquier host, lo que podría tener implicaciones de seguridad.
Información adicional
Privilegios globales
Para conceder privilegios globales que se apliquen a todas las bases de datos, utiliza la sintaxis ON *.*. Concede globalmente los privilegios especificados.
Revocación de privilegios
Para revocar privilegios, utiliza la declaración REVOKE:
REVOKE privileges
ON database_name.table_name
FROM'user'@'host';Con la tecnología de
Esto elimina los privilegios especificados del usuario.
Consejos y buenas prácticas
Limita los privilegios. Concede sólo los privilegios necesarios a los usuarios para minimizar los riesgos de seguridad.
Utiliza nombres de host específicos. Siempre que sea posible, especifica nombres de host o direcciones IP para restringir el acceso, en lugar de utilizar % para todos los hosts.
Gestiona las contraseñas de forma segura. Utiliza siempre contraseñas fuertes y únicas cuando crees cuentas de usuario.
Revisa periódicamente los permisos. Audita periódicamente y revoca los privilegios innecesarios para mantener una seguridad óptima. Utiliza la tabla mysql.user o las vistas del esquema de información relevante para revisar los privilegios de usuario existentes.
Cambios en los documentos. Lleva un registro de todas las declaraciones GRANT emitidas para facilitar el seguimiento de los permisos.
La sentencia
GRANTen MySQL se utiliza para asignar privilegios a las cuentas de usuario de MySQL. Define qué operaciones pueden realizar los usuarios en los objetos de la base de datos, como tablas y vistas, garantizando un acceso controlado a la base de datos.Utilización
La sentencia
GRANTse emplea cuando necesitas dar permisos a usuarios concretos para ejecutar determinados tipos de operaciones SQL. Ayuda a gestionar los derechos de los usuarios de forma eficaz y segura.En esta sintaxis,
privilegesson los permisos concedidos,database_name.table_nameespecifica el ámbito,useres el nombre de usuario de MySQL yhostes la ubicación desde la que se conecta el usuario. Ten en cuenta que la cláusulaIDENTIFIED BY 'password'sólo es aplicable al crear un nuevo usuario. En MySQL 8.0 y versiones posteriores, normalmente se recomienda utilizarCREATE USERseguido deGRANTpara la creación de usuarios y la asignación de privilegios.Ejemplos
1. Concesión de privilegios básicos
Este ejemplo concede los privilegios
SELECTyINSERTenmydb.mytableauser1conectándose desdelocalhost.2. Conceder todos los privilegios en una base de datos
Aquí, a
user2se le conceden todos los privilegios sobre toda la base de datosmydbdesde el host192.168.1.1.3. Conceder privilegios con contraseña
Esta sentencia concede privilegios a
SELECTyUPDATEenmydb.mytableauser3desde cualquier host (%), estableciendo una contraseña especificada. Utilizar%permite conexiones desde cualquier host, lo que podría tener implicaciones de seguridad.Información adicional
Privilegios globales
Para conceder privilegios globales que se apliquen a todas las bases de datos, utiliza la sintaxis
ON *.*. Concede globalmente los privilegios especificados.Revocación de privilegios
Para revocar privilegios, utiliza la declaración
REVOKE:Esto elimina los privilegios especificados del usuario.
Consejos y buenas prácticas
%para todos los hosts.mysql.usero las vistas del esquema de información relevante para revisar los privilegios de usuario existentes.GRANTemitidas para facilitar el seguimiento de los permisos.