MySQL 5.5.16 permite conexões anônimas

4

Aparentemente, eu posso conectar ao MySQL (pelo menos do meu localhost) sem precisar fornecer nenhum nome de usuário ou senha. Eu posso até colocar qualquer coisa como nome de usuário, contanto que a senha esteja vazia. Eu tenho acesso aos bancos de dados information_schema e test . Eu posso criar tabelas. Se eu executar SELECT USER() , ele retornará o valor apropriado randomstring @ localhost, onde a string aleatória é o que eu usei para o nome de usuário quando eu conectei.

A tabela mysql.user contém root @ localhost, [email protected], @localhost e pma @ localhost. Eu defino manualmente senhas criptografadas para todos os registros ( UPDATE user SET password=... ) e somente root tem privilégios, os outros dois registros têm "N" para todos os privilégios. Esse registro com o nome de usuário vazio parece suspeito, mas acho que não tem nada a ver com isso e acho que estava lá desde o começo.

Para piorar, se eu adicionar um usuário com uma senha, só posso conectar usando uma string vazia como senha (como se eu colocasse qualquer coisa como nome de usuário). Se eu tentar conectar usando o nome de usuário que eu criei e a senha que eu forneci ao criá-lo ( CREATE USER .. IDENTIFIED BY .. ) ele não funciona.

Alguém sabe o que está errado e como posso corrigir isso?

Nota: estou usando o MySQL 5.5.16 para Windows, fornecido pelo pacote XAMPP.

    
por f.ardelian 12.03.2012 / 01:17

2 respostas

4

Você precisa simplesmente remover o usuário anônimo.

No futuro, a execução de / usr / bin / mysql_secure_installation (Localização na instalação RPM) solicitará que você remova esses usuários anônimos.

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y ... Success!

    
por 14.03.2012 / 16:47
2

Remova a entrada do usuário com o nome de usuário vazio. É a causa. Use select user(); quando logado para verificar se é o usuário que você logou como.

Veja aqui :

Some accounts are for anonymous users. These have an empty user name. The anonymous accounts have no password, so anyone can use them to connect to the MySQL server.

    
por 12.03.2012 / 01:31