No MySQL, a palavra-chave localhost
é reservada para conexão usando o soquete MySQL e você deve usar o endereço IP 127.0.0.1
para conexões TCP com a porta de rede MySQL em 127.0.0.1. Isso significa que o servidor deve conceder privilégios aos usuários especificamente de 127.0.0.1
, e o cliente deve usar -h 127.0.0.1
para percorrer o encapsulamento em vez de se conectar a um soquete local.
Para permitir o acesso por meio do encaminhamento de porta SSH, você precisa de algo como:
GRANT SELECT ON *.* TO user@'127.0.0.1'
e, em seguida, execute
FLUSH PRIVILEGES;
e possivelmente
FLUSH QUERY CACHE;
Se ainda assim não funcionar, reinicie o processo do servidor.
Nas mensagens de erro 127.0.0.1, depois que uma pesquisa de DNS reversa é convertida em localhost
, tornando a depuração difícil.
Como o manual descreve:
On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a -
-port
or-P
option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use--host
or-h
to specify a host name value of127.0.0.1
, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the--protocol=TCP
option. For example:
shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
The
--protocol
option enables you to establish a particular type of connection even when the other options would normally default to some other protocol.