Si hay un único privilegio que represente TODAS las operaciones READ en la base de datos.
Depende de cómo defina "todo leído".
"Leer" de tablas y vistas es un SELECT
privilegio. Si eso es lo que quiere decir con "todos leídos", entonces sí:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
Sin embargo, parece que te refieres a la capacidad de "ver" todo, de "mirar pero no tocar". Entonces, aquí están los otros tipos de lectura que me vienen a la mente:
"Leer" la definición de vistas es un SHOW VIEW
privilegio.
"Leer" la lista de consultas en ejecución por otros usuarios es el PROCESS
privilegio.
"Leer" el estado de replicación actual es el REPLICATION CLIENT
privilegio.
Tenga en cuenta que cualquiera o todos estos podrían exponer más información de la que pretende exponer, según la naturaleza del usuario en cuestión.
Si esa es la lectura que desea hacer, puede combinar cualquiera de esos (o cualquier otro de los privilegios disponibles ) en una sola GRANT
declaración.
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
Sin embargo, no existe un privilegio único que otorgue algún subconjunto de otros privilegios, que es lo que parece que estás preguntando.
Si está haciendo las cosas manualmente y busca una manera más fácil de hacerlo sin necesidad de recordar la concesión exacta que normalmente otorga a una determinada clase de usuario, puede buscar la declaración para regenerar las concesiones de un usuario comparable y cambiarla. para crear un nuevo usuario con privilegios similares:
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Cambiar 'not_leet' y 'localhost' para que coincidan con el nuevo usuario que desea agregar, junto con la contraseña, dará como resultado una GRANT
declaración reutilizable para crear un nuevo usuario.
O, si desea que una sola operación configure y otorgue el conjunto limitado de privilegios a los usuarios, y tal vez elimine cualquier privilegio no merecido, puede hacerlo creando un procedimiento almacenado que encapsule todo lo que desea hacer. Dentro del cuerpo del procedimiento, construiría la GRANT
declaración con SQL dinámico y / o manipularía directamente las propias tablas de concesión.
En esta pregunta reciente sobre administradores de bases de datos , el autor quería la capacidad de un usuario sin privilegios de modificar a otros usuarios, lo cual, por supuesto, no es algo que se pueda hacer normalmente; un usuario que puede modificar a otros usuarios, prácticamente por definición, no es un usuario sin privilegios, sin embargo, los procedimientos almacenados proporcionaron una buena solución en ese caso, porque se ejecutan con el contexto de seguridad de su DEFINER
usuario, lo que permite a cualquier persona con EXECUTE
privilegios en el procedimiento asumir temporalmente privilegios escalados para permitirles hacer las cosas específicas que procedimiento logra.
SHOW VIEW
no esSHOW_VIEW
, pero no es necesario que se lo otorgue a un usuario a menos que desee que pueda hacerloSHOW CREATE VIEW
en las vistas ... pueden seleccionar de las vistas con el únicoSELECT
privilegio. ¿Qué quiere decir con "agrupar todas las operaciones de lectura en concesión"?