sql >> Base de Datos >  >> RDS >> Mysql

MySQL:¿Cómo evitar que un usuario vea que tengo otras bases de datos y otorgar acceso de selección a una vista en una base de datos?

Encontré la descripción general contenida en este artículo incluso más útil que la actual documentación de MySQL por describir el panorama general de cómo se otorgan o niegan los privilegios de MySQL.

La esencia del artículo de descripción general es que los privilegios están controlados por una serie de tablas de permisos cada vez más detalladas en mysql base de datos:mysql.user , mysql.db , mysql.host , mysql.tables_priv , mysql.columns_priv , mysql.procs_priv . La regla general es que un valor "Y" para un privilegio en una tabla más detallada invalida un valor "N" en una tabla más detallada. Entonces, la estrategia recomendada es comenzar negando la mayoría de los privilegios en el user (que brinda el control más tosco) y luego realice solo las anulaciones específicas que desee en las tablas más detalladas.

En particular, existe un privilegio llamado SHOW_DATABASES que está determinado por el Show_db_priv columna en mysql.user mesa; querrá configurar esto en "N" para el usuario en cuestión (y como se describe anteriormente, es posible que también desee configurar la mayoría de los otros permisos en la tabla de usuarios en "N") y luego otorgar solo los privilegios que el usuario realmente necesita en mysql.db o mysql.tables_priv mesa o lo que sea apropiado para su caso particular.