Versões mais antigas do MySQL tinham algumas contas de teste com nomes de usuários vazios que eram criados por padrão. Eles eram principalmente inofensivos, mas muito problemáticos. Houve um script chamado mysql_secure_installation
que limpou isso, e parece que não foi executado quando o sistema foi configurado.
Execute esta consulta para confirmar:
mysql> SELECT * FROM mysql.user WHERE user = '';
Observe que ''
é dois caracteres de aspas simples '
não é uma única aspa dupla "
.
Depois de garantir que você tenha um backup completo por segurança, remova essas contas de teste. (Esta deve ser uma operação perfeitamente segura, mas ter uma cópia de segurança é uma boa prática.)
mysql> DELETE FROM mysql.user WHERE user = '';
mysql> FLUSH PRIVILEGES;
O problema com essas contas de teste é que há algum comportamento mágico quando se trata de nomes de usuário correspondentes, e um nome de usuário vazio tem um significado especial. Foi um recurso ruim que provavelmente foi adicionado originalmente para facilitar a introdução.
Depois disso, o novo usuário deve funcionar corretamente ... mas observe que você não deve criar contas sem senhas.