Por que o mySQL não permite usuários @ '%' do host local?

1

Parece que a solução para aceitar usuários do localhost é criar uma cópia do usuário com @ 'localhost' (além do usuário @ '%'). Estou tentando muito entender a lógica aqui, porque parece loucura que o curinga 'any host', '%', também não aceitaria conexões localhost. Criar um segundo usuário não é muito prático quando se lida com um grande número de usuários. Se um usuário alterar sua própria senha, ela não afetará a outra.

Existe algum tipo de solução alternativa para permitir que o usuário @ '%' aceite conexões localhost?

    
por Talik 28.11.2012 / 18:32

2 respostas

3

O estilo localhost de se conectar ao mysqld força o cliente mysql a autenticar através do arquivo socket.

Conectar via curinga % exige a conexão ao mysqld via TCP / IP.

Se tiver myuser@'%' com uma senha de mys3cr3t e você não quiser adicionar myuser@'localhost' , gostaria de sugerir o seguinte:

Conecte-se ao mysql assim

mysql --protocol=tcp -umyuser -pmys3cr3t

Usar --protocol=tcp força o programa cliente mysql a usar o TCP / IP para conectar

Depois de se conectar, execute esta consulta

SELECT USER(),CURRENT_USER();

USER () relata como você tentou autenticar no MySQL

CURRENT_USER () informa como você pode autenticar no MySQL

Eu escrevi sobre isso no DBA StackExchange em 18 de janeiro de 2012 .

    
por 28.11.2012 / 18:41
2

Você precisa remover os usuários anônimos, já que a correspondência de padrões do MySQL irá combiná-los primeiro .

Execute o script mysql_secure_installation ou removê-los manualmente .

    
por 28.11.2012 / 18:39