O usuário Mysql pode ver todos os bancos de dados, mas deve ver apenas o seu próprio

1

Estamos usando o Virtualmin para fazer a maior parte do nosso gerenciamento de banco de dados, mas aparentemente ele tem um bug que define as permissões de um usuário muito amplamente em alguns casos. Além disso, o manual do MySQL não menciona nada sobre restringir a capacidade do usuário de ver outros bancos de dados com o comando "show databases".

Quando eu executo "show grants para 'usuário' @ 'localhost';" Eu entendo isso:

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for user@localhost                                                                                                                                                                                                                   |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, CREATE TEMPORARY TABLES ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 'ENCRYPTED'                                                                |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON 'database'.* TO 'user'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Isto é mesmo depois de executar "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, CREATE TABLES TEMPORARY no banco de dados. * para 'usuário' @ 'localhost';"

    
por Ernie 25.08.2011 / 19:47

1 resposta

5

Não tenho certeza de qual é a sua pergunta atual, mas se é por isso que o usuário ainda pode ver tudo, é porque essas doações são aditivas.

Você precisa remover a concessão que não deseja (a primeira) e incluir a segunda.

i.e. remover

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, CREATE TEMPORARY TABLES ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 'ENCRYPTED'

e mantenha,

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON 'database'.* TO 'user'@'localhost' WITH GRANT OPTION

Tente,

REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, CREATE TEMPORARY TABLES ON *.* FROM 'user'@'localhost'
    
por 25.08.2011 / 20:00

Tags