Estou tentando derrubar os usuários anônimos do meu banco de dados mysql.users. No entanto, tenho tido um comportamento estranho. Quando insiro o comando:
DROP User ''@'WOPR';
Eu estava recebendo uma mensagem de erro genérica. Então, reiniciei minha máquina e tentei novamente. Desta vez eu recebi a resposta
Query OK, 0 rows affected.
Mas quando eu coloco
SELECT User, Host, Password FROM mysql.user WHERE User='';
O retorno é:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
(WOPR é o meu nome de host)
Eu executo o comando
DROP User ''@'WOPR';
e obtenha o mesmo resultado.
Estou executando uma nova instalação do MySQL 5.5 no Arch Linux, versão 2.6.33 do kernel.
Alguém sabe o que pode causar esse comportamento?
Respostas:
Isso deve fazer isso por você.
De uma chance !!!
EMBARGO
O MySQL possui alguns usuários pré-instalados no mysql.user. Além disso, o mysql.db vem com dois usuários que têm acesso anônimo e privilégios totais para testar bancos de dados.
Apenas faça isso
e você verá que qualquer pessoa que se conecte ao teste ou a qualquer banco de dados começando com test_ pode praticamente fazer tudo no banco de dados de teste. Isso é ruim, pois uma pessoa com acesso total a qualquer banco de dados de teste pode consumir um disco em questão de minutos.
Exemplo:
OK, grande coisa. Faz uma tabela com 4 bytes.
Agora, tentando executar esta instrução SQL 30 vezes:
Ei, uma tabela instantânea com 1.073.741.824 linhas (4 GB + arquivo) !!! Imagens com direitos totais para um banco de dados de teste onde você pode causar esse tipo de destruição em um disco.
Meu conselho para você é executar isso para limpar o acesso do usuário de teste:
Para maiores esclarecimentos, veja meu post no MySQL: Por que existem entradas "test" no mysql.db?
Felicidades !!!
fonte
drop user
sintaxe em vez de modificarmysql.user
diretamente a tabela subjacente ?DROP USER
sintaxe não funciona quando o campo do usuário está em branco (sequência vazia). Você deve fazer o que a resposta especifica.mysql.user
tabela?mysql.db
instalação, permitindo que usuários anônimos acessem um banco de dados de teste. Curiosamente, me disseram que a instalação do Percona Server exclui essas linhas antes que a instalação seja concluída ( dba.stackexchange.com/questions/66584/… ). Como você está usando o MySQL, execute mysql_secure_installation ou exclua essas duas linhas.