Un rol es una forma de agrupar permisos (o privilegios) para asignarlos luego a los
usuarios.
Creacin de usuarios
CREATE
USER
usuario
'miClaveSecreta];
[IDENTIFIED
BY
El nombre de usuario debe incluir el host, de otro modo usar el host '%' que
representa cualquier mquina (es un usuario global).
No es obligatorio el apartado IDENTIFIED BY que permite indicar la contrasea; si no
se hace uso de l, la contrasea del usuario queda en blanco (situacin no
recomendable).
Niveles de Privilegios
EnMySQLexisten cinco niveles distintos de privilegios:
Globales:se aplican al conjunto de todas las bases de
datos en un servidor. Es el nivel ms alto de
privilegio, en el sentido de que su mbito es el ms
general.
De base de datos:se refieren a bases de datos
individuales, y por extensin, a todos los objetos que
contiene cada base de datos.
De tabla:se aplican a tablas individuales, y por lo
tanto, a todas las columnas de esas tabla.
De columna:se aplican a una columna en una tabla
concreta.
De
rutina:se
almacenados.
aplican
los
procedimientos
Privilegios a Usuarios
GRANT (conceder un privilegio a un usuario o a un rol)
REVOKE (denegar un privilegio a un usuario o a un rol)
GRANT
TO
ALL
USER
LISTA DE PRIVILEGIOS:
[@LOCALHOST]
INSERT, DELETE, UPDATE,
[IDENTIFIED BY password]
CREATE, DROP, SELECT
, [USER2]
ALTER, RELOAD, SHUTDOWN,
INDEX, SHOW DATABASES,
[WITH
LOCK TABLES, EXECUTE,
GRANT OPTION]
CREATE USER
MAX_QUERIES_PER_HOUR n ]
[(.NOMBRE DE COLUMNA)]
MAX_UPDATES_PER_HOUR n ]
ON
MAX_CONNECTIONS_PER_HOUR n ]
*.*
MAX_USER_CONNECTIONS n ]
DB.*
(Concurrencia)
DB.TABLA
DB.VISTA
Si no asignamos with grant option, no se le permitir dar permisos aunque sea un Usuario
global.
nombre_privilegio columnas] ON
elemento from
nombre_usuario[@localhost];
Para quitar los permisos sobre una tabla en particular el Usuario debe
tener los permisos asignados sobre esa tabla y no de manera global.
Nivel global. Se aplican a todas las bases de datos de un servidor dado. Estos
privilegios se almacenan en la tablamysql.user
GRANT privilegio ON*.* to usuario [IDENTIFIED BY clave];
REVOKE ALL ON*.* from usuario;
Nivel de base de datos. Se aplican a todos los objetos en una base de datos dada.
se almacenan en la tablamysql.db
GRANT ALL ONdb_name.* to usuario;
REVOKE ALL ONdb_name.* from usuario;
Nivel Tabla. Se aplican a todas las columnas de una tabla dada. Estos privilegios se
almacenan en la tablamysql.tables_priv.
GRANT ALL ONdb_name.tbl_name to usuario;
REVOKE ALL ONdb_name.tbl_name from usuario;
Nivel Columna. Se aplican a una sola columna de una tabla es especifico. Estos
privilegios se almacenan en la tablamysql.tables_priv
GRANT privilegio(columna) ONdb_name.tbl_name to usuario;
REVOKE privilegio(columna) ONdb_name.tbl_name from usuario;
Privilegios de usuarios
Los nicos privilegios que puede especificar para una tabla son
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION,
INDEX, y ALTER.
Los nicos privilegios que se puede especificar para una columna
son SELECT, INSERT, y UPDATE.
Los nicos valores que puede especificar a nivel de rutina son
ALTER ROUTINE, EXECUTE, y GRANT OPTION.