Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Como evitar que um usuário veja que tenho outros bancos de dados e conceda acesso de seleção a uma visualização em um banco de dados?


Encontrei a visão geral contida em este artigo ainda mais útil do que a própria documentação do MySQL para descrever o quadro geral de como os privilégios do MySQL são concedidos ou negados.

A essência do artigo de visão geral é que os privilégios são controlados por uma série de tabelas de permissões cada vez mais refinadas no mysql banco de dados:mysql.user , mysql.db , mysql.host , mysql.tables_priv , mysql.columns_priv , mysql.procs_priv . A regra geral é que um valor "Y" para um privilégio em uma tabela mais refinada anula um valor "N" em uma tabela mais refinada. Portanto, a estratégia recomendada é começar negando a maioria dos privilégios no user table (que fornece o controle mais grosseiro) e, em seguida, faça apenas as substituições específicas desejadas nas tabelas mais refinadas.

Em particular, há um privilégio chamado SHOW_DATABASES que é determinado pelo Show_db_priv coluna no mysql.user tabela; você vai querer definir isso como "N" para o usuário em questão (e como descrito acima, você pode querer definir a maioria das outras permissões na tabela de usuários para "N" também) e, em seguida, conceder apenas os privilégios que o usuário realmente precisa no mysql.db ou mysql.tables_priv tabela ou o que for apropriado para o seu caso particular.