Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MySQL: otorgar/revocar permisos
Este tutorial de MySQL explica cómo Otorgar y revocar permisos Sintaxis y ejemplos en MySQL.
describir
Puede otorgar y revocar privilegios en varios objetos de base de datos en MySQL. Luego puede usar el comando SHOW GRANTS para ver los permisos asignados al usuario. Veremos cómo otorgar y revocar permisos sobre tablas, funciones y procedimientos en MySQL.
Otorgar permisos en la tabla
Puede otorgar a los usuarios varios permisos en las tablas. Estos permisos pueden ser cualquier combinación de SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION o ALL.
sintaxis
La sintaxis para otorgar privilegios de tabla en MySQL es:
GRANT privileges ON object TO user;
privilegio
Puede ser cualquiera de los siguientes valores:
privilegio | describir |
---|---|
escoger | Capacidad para ejecutar sentencias SELECT en tablas. |
insertar | Capacidad para ejecutar instrucciones INSERT en tablas. |
renovar | Capacidad para ejecutar instrucciones UPDATE en tablas. |
Eliminar | Capacidad para ejecutar sentencias DELETE en tablas. |
índice | Capacidad para crear índices en tablas existentes. |
crear | Habilidad para ejecutar sentencias CREATE TABLE. |
Cambio | Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla. |
reducir | Habilidad para ejecutar sentencias DROP TABLE. |
Opciones de concesión | Le permite otorgar los permisos que tiene a otros usuarios. |
todo | Otorgue todos los permisos excepto GRANT OPTION. |
objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permisos de tabla otorgados, este será el nombre de la tabla. usuario El nombre del usuario al que se le otorgarán estos permisos.
ejemplo
Veamos algunos ejemplos de cómo otorgar permisos de tabla en MySQL.
Por ejemplo, si quisiera otorgar permisos SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR en una tabla llamada contactos al nombre de usuario smithj, ejecutaría la siguiente instrucción GRANT:
GRANT SELECT, INSERT, UPDATE, DELETE ON contacts TO 'smithj'@'localhost';
También puede usar la palabra clave ALL para indicar que desea otorgar todos los permisos excepto GRANT OPTION a un usuario llamado smithj. Por ejemplo:
GRANT ALL ON contacts TO 'smithj'@'localhost';
Si solo desea otorgar acceso SELECT a la tabla de contactos a todos los usuarios, puede otorgar permisos a *. Por ejemplo:
GRANT SELECT ON contacts TO '*'@'localhost';
Revocar privilegios en las tablas
Después de otorgar privilegios, es posible que deba revocar algunos o todos esos privilegios. Para hacer esto, puede ejecutar el comando deshacer. Puede deshacer cualquier combinación de SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REFERENCIAS, ALTERAR o TODO.
sintaxis
La sintaxis para revocar privilegios de tabla en MySQL es:
REVOKE privileges ON object FROM user;
privilegio
Puede ser cualquiera de los siguientes valores:
privilegio | describir |
---|---|
escoger | Capacidad para ejecutar sentencias SELECT en tablas. |
insertar | Capacidad para ejecutar instrucciones INSERT en tablas. |
renovar | Capacidad para ejecutar instrucciones UPDATE en tablas. |
Eliminar | Capacidad para ejecutar sentencias DELETE en tablas. |
índice | Capacidad para crear índices en tablas existentes. |
crear | Habilidad para ejecutar sentencias CREATE TABLE. |
Cambio | Capacidad para ejecutar instrucciones ALTER TABLE para modificar las definiciones de la tabla. |
reducir | Habilidad para ejecutar sentencias DROP TABLE. |
Opciones de concesión | Le permite otorgar los permisos que tiene a otros usuarios. |
todo | Otorgue todos los permisos excepto GRANT OPTION. |
objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar permisos sobre una tabla, este será el nombre de la tabla. usuario El nombre del usuario cuyos permisos serán revocados.
ejemplo
Veamos algunos ejemplos de cómo revocar permisos sobre una tabla en MySQL.
Por ejemplo, si quisiera revocar los permisos ELIMINAR y ACTUALIZAR para un usuario llamado smithj en una tabla llamada contactos, ejecutaría la siguiente instrucción REVOKE:
REVOKE DELETE, UPDATE ON contacts FROM 'smithj'@'localhost';
Si desea revocar todos los permisos en una tabla (excepto GRANT OPTION) de un usuario llamado smithj, puede usar la palabra clave ALL de la siguiente manera:
REVOKE ALL ON contacts FROM 'smithj'@'localhost';
Si ha otorgado privilegios SELECT a * (es decir, todos los usuarios) en la tabla de contactos y desea revocar esos privilegios, puede ejecutar la siguiente instrucción REVOKE:
REVOKE SELECT ON contacts FROM '*'@'localhost';
Otorgar privilegios de funciones/programas
Al trabajar con funciones y procedimientos, puede otorgar a los usuarios la capacidad de ejecutar esas funciones y procedimientos en MySQL.
sintaxis
La sintaxis para otorgar permiso EXECUTE a una función/procedimiento en MySQL es:
GRANT EXECUTE ON [ PROCEDURE | FUNCTION ] object TO user;
EJECUTAR La capacidad de ejecutar una función o procedimiento. PROCEDURE se usa cuando se otorgan privilegios a un procedimiento en MySQL. FUNCIÓN se utiliza cuando se concede permiso a una función en MySQL. objeto El nombre del objeto de la base de datos para el que otorga permisos. En el caso de permiso EXECUTE otorgado a una función o procedimiento, este será el nombre de la función o nombre del procedimiento. usuario El nombre del usuario al que se le otorgará el privilegio EXECUTE.
Ejemplo – Función
Veamos algunos ejemplos sobre cómo otorgar privilegios EXECUTE a funciones en MySQL.
Por ejemplo, si tuviera una función llamada CalcIncome y quisiera otorgar acceso EXECUTE a un usuario llamado smithj, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON FUNCTION CalcIncome TO 'smithj'@'localhost';
Si quisiera otorgar a todos los usuarios la capacidad de realizar esta función, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON FUNCTION CalcIncome TO '*'@'localhost';
Ejemplo – Proceso
Veamos algunos ejemplos de cómo otorgar permiso EXECUTE en un procedimiento en MySQL.
Por ejemplo, si tuviera un procedimiento llamado MyFirstProc y quisiera otorgar acceso EXECUTE a un usuario llamado smithj, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON PROCEDURE MyFirstProc TO 'smithj'@'localhost';
Si quisiera otorgar a todos los usuarios la capacidad de realizar este procedimiento, ejecutaría la siguiente instrucción GRANT:
GRANT EXECUTE ON PROCEDURE MyFirstProc TO '*'@'localhost';
Revocar privilegios de funciones/programas
Una vez que otorga permisos de EJECUCIÓN a una función o procedimiento, es posible que deba revocar esos permisos del usuario en MySQL. Para hacer esto, puede ejecutar el comando REVOKE.
sintaxis
La sintaxis para revocar privilegios sobre una función o procedimiento en MySQL es:
REVOKE EXECUTE ON [ PROCEDURE | FUNCTION ] object FROM user;
EJECUTAR Se revoca la capacidad de ejecutar una función o procedimiento. PROCEDURE se usa cuando se revocan privilegios en un procedimiento en MySQL. FUNCIÓN se usa cuando se revoca una función en MySQL. objeto El nombre del objeto de la base de datos cuyos permisos desea revocar. En el caso de revocar el permiso EXECUTE sobre una función o procedimiento, éste será el nombre de la función o nombre del procedimiento. usuario El nombre del usuario cuyo privilegio EXECUTE será revocado.
Ejemplo – Función
Veamos algunos ejemplos de cómo revocar los privilegios EXECUTE en funciones en MySQL.
Si quisiera revocar los privilegios EXECUTE de un usuario llamado smithj en una función llamada CalcIncome, ejecutaría la siguiente instrucción REVOKE:
REVOKE EXECUTE ON FUNCTION CalcIncome FROM 'smithj'@'localhost';
Si ha otorgado permisos EXECUTE a * (todos los usuarios) en una función denominada CalcIncome y desea revocar esos permisos EXECUTE, puede ejecutar la siguiente instrucción REVOKE:
REVOKE EXECUTE ON FUNCTION CalcIncome FROM '*'@'localhost';
Ejemplo – Proceso
Veamos algunos ejemplos de cómo revocar los privilegios EXECUTE de los procedimientos en MySQL.
Si quisiera revocar los privilegios EXECUTE para un procedimiento llamado MyFirstProc de un usuario llamado smithj, ejecutaría la siguiente instrucción REVOKE:
REVOKE EXECUTE ON PROCEDURE MyFirstProc FROM 'smithj'@'localhost';
Si ha otorgado permisos EXECUTE a * (todos los usuarios) en un procedimiento denominado CalcIncome y desea revocar esos permisos EXECUTE, puede ejecutar la siguiente instrucción REVOKE:
REVOKE EXECUTE ON PROCEDURE MyFirstProc FROM '*'@'localhost';