Remover Contas de Usuário Anônimas
Por padrão, algumas instalações do MySQL criam contas de usuário anônimas, que possuem um nome de usuário vazio. Essas contas representam um risco de segurança porque podem permitir acesso não autorizado. É uma prática de segurança crítica verificar e removê-las, se existirem.
Você pode identificar usuários anônimos consultando a tabela mysql.user em busca de entradas com um nome de usuário em branco.
SELECT User, Host FROM mysql.user WHERE User = '';
Se usuários anônimos existirem, esta consulta os listará. Uma instalação nova no Ubuntu pode incluir um, mas versões mais recentes do MySQL/MariaDB frequentemente não possuem usuários anônimos por padrão.
Se você vir resultados como:
+------+-----------+
| User | Host |
+------+-----------+
| | localhost |
+------+-----------+
1 row in set (0.00 sec)
Então você deve remover o usuário anônimo com a instrução DROP USER, especificando tanto o nome de usuário (que é uma string vazia '') quanto o host:
DROP USER ''@'localhost';
Você deverá ver esta confirmação:
Query OK, 0 rows affected (0.01 sec)
No entanto, se sua consulta retornar um conjunto vazio como:
Empty set (0.00 sec)
Isso significa que não há usuários anônimos em seu banco de dados, o que já é seguro. Neste caso, se você tentar remover um usuário anônimo inexistente, receberá um erro:
ERROR 1396 (HY000): Operation DROP USER failed for ''@'localhost'
Este erro é esperado se nenhum usuário anônimo existir, e você pode prosseguir com segurança.
Após verificar a existência de usuários anônimos e removê-los, se necessário, limpe os privilégios para garantir que quaisquer alterações sejam aplicadas:
FLUSH PRIVILEGES;
Verifique novamente se nenhum usuário anônimo permanece executando a consulta SELECT:
SELECT User, Host FROM mysql.user WHERE User = '';
Esta consulta deve retornar um conjunto vazio, confirmando que não existem usuários anônimos:
Empty set (0.00 sec)
Você verificou e abordou com sucesso uma potencial vulnerabilidade de segurança em seu servidor. Agora você pode sair do shell do MySQL.
exit;