Los comandos GRANT y REVOKE permiten a los adminitradores de sistemas crear cuentas de usuario MySQL y darles permisos y quitarlos de las cuentas.
La información de cuenta de MySQL se almacena en las tablas de la base de datos mysql.
Si las tablas de permisos tienen registros de permisos que contienen nombres de tablas o bases de datos con mayúsculas y minúsculas y la variable de sistema lower_case_table_names está activa, REVOKE no puede usarse para quitar los permisos. Es necesario manipular las tablas de permisos directamente. (GRANT no creará estos registros cuando está activo lower_case_table_names , pero tales registros pueden haberse creado préviamente a activar la variable.)
Lo mas común es crear un usuario con todos los privilegios sobre determinada base de datos, como se muestra a continuación:
1 -- Creamos la tabla alguna_bd;
2 CREATE DATABASE alguna_bd;
3 -- Vamos agregar el usuario x
4 CREATE USER 'user_x'@'localhost'
5 IDENTIFIED BY 'password_user_x';
6
7 -- Le asignamos todos los permisos sobre la bd 'alguna_bd'
8 GRANT ALL PRIVILEGES ON 'alguna_bd'.*
9 TO 'user_x'@'localhost';
10
11 -- Revisando los permisos para el usuario_x
12 SHOW GRANTS FOR 'usuario_x'@'localhost';
13
14 -- Actualizamos los permisos
15 FLUSH PRIVILEGES;
1 REVOKE ALL PRIVILEGES ON alguna_bd.* FROM 'usuario_x'@'localhost';
La sintaxis GRANT nos permite otorgar diversos permisos para un usuarios a diversas tablas en una base de datos, veamos su sintaxis básica:
1 GRANT [Tipo permiso(s)]
2 ON [baseDatosNombre].[tabla]
3 TO [UserName]@[Host];
Para ver la lista de permisos completa consulte el siguiente enlace: http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html
Imaginemos que la empresax en su servidor tenemos un sistema que en su base de datos sistema
maneja el stock de sus productos donde deseamos que en la tabla productos, tenga el siguiente comportamiento.
Este usuario solo puede leer la tabla productos y sera el único que podrá agregar nuevos productos conforme lleguen dichos productos a la bodega de la empresa:
SELECT
)INSERT
)Este usuario podrá leer y podrá borrar los productos conforme vallan saliendo los productos en el punto de venta:
SELECT
)DELETE
)Una vez que definimos la lógica en los acceso para los usuarios vamos agregar los usuarios y sus permisos como se muestra a continuación:
1 -- Creando el usuario bodega
2 CREATE USER 'bodega'@'empresax'
3 IDENTIFIED BY 'secret_pass';
4 -- Le damos permisos solamente para leer y agregar productos
5 GRANT SELECT,INSERT,UPDATE ON sistema.productos
6 TO 'bodega'@'empresax';
7
8 -- Creando el usuario punto_venta
9 CREATE USER 'punto_venta'@'empresax'
10 IDENTIFIED BY 'secret_pass';
11 -- Le damos permisos solamente para leer y agregar productos
12 GRANT SELECT,DELETE ON sistema.productos
13 TO 'punto_venta'@'empresax';
Mysql guarda la información de los usuarios y sus permisos en la base de datos mysql, usted puede comprobar esta información
Usuarios y privilegios en Mysql. | 1 |
---|---|
Ejemplo básico. | 2 |
Asignación de permisos. | 3 |
Algunos ejemplos: | 4 |
Agregando usuarios y permisos | 5 |
MySQL y la base mysql | 6 |
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |