Conexão remota ao servidor mysql?

3

Eu tenho tentado descobrir porque eu continuo recebendo este erro quando tento conectar-me ao servidor MySQL com os seguintes comandos.

$~ mysql -u username -h SQLserver -p
Enter password:
ERROR 1045 (28000): Access denied for user 'username'@'myIP' (using password: YES)

Eu fiz o seguinte: O porto está aberto no firewall, caso contrário, eu não receberia o erro que acabaria com o tempo limite. Servidor MySQL não está sendo executado com o skip-networking ou o bind-address
username tem host como '%' e eu posso conectar localmente para que a senha esteja correta.

GRANT USAGE ON *.* TO username@% IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Eu queria saber se alguém tinha ideias ou se deparou com esse problema antes e resolveu o problema? Como você pode ver, consigo fazer login localmente, mas quando tento fazer o servidor -h, recebo o erro.

mysql> SELECT user(),Current_user();
+--------------------+----------------+
| user()             | Current_user() |
+--------------------+----------------+
| username@localhost | username@%     |
+--------------------+----------------+
1 row in set (0.00 sec)

Resultados para comentários:

mysql> select user, host from mysql.user where user='username';
+----------+------+
|   user   | host |
+----------+------+
| username | %    |
+----------+------+
1 row in set (0.00 sec)

mysql> show grants for 'username';
+----------------------------------------------------------------------------------------------------------------+
| Grants for username@%                                                                                            |
+----------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY PASSWORD '*F42AD03PASSWORDHASHADF4021C86B' |
| GRANT ALL PRIVILEGES ON 'DB2'.* TO 'username'@'%'                                                           |
+----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
    
por LF4 08.09.2012 / 04:56

2 respostas

1

Pode estar fora do escopo, mas eu prefiro nunca deixar um banco de dados escutar em uma porta pública e isso pode ajudá-lo a evitar o problema.

Eu configurei todos os bancos de dados remotos que eu preciso com [auto] ssh para escutar no host local da máquina, eu quero acessar o banco de dados. Isso:

autossh N -f -L 3307:127.0.0.1:3306 yourserver

ligaria porta em 127.0.0.1:3306 de yourserver para a porta localhost 3307 da máquina de sua chamada. Você nem precisa de privilégios sudo para ligar esta porta.

Quando você acessa agora o servidor com

mysql -u user -P 3307 -h 127.0.0.1 -p      

você é um usuário "localhost" no host remoto e não haveria mais a necessidade de uma diretiva 'user'@'remote' ou 'user'@'%' . Mas não use

mysql -u user -P 3307 -h localhost -p 

porque desta forma o cliente mysql tenta se conectar ao socket, o qual não foi encaminhado desta maneira e portanto não é acessível.

O SSH é rápido depois de uma configuração de conexão, você não deve sentir sobrecarga. autossh tenta infinitamente restabelecer a conexão após um dropout em comparação com o ssh, que acabará de terminar.

    
por 09.09.2012 / 15:12
0

Parece que estou recordando dos recessos profundos da minha memória que, para que um 'usuário' @ '%' funcione, você também deve ter um 'usuário' @ 'localhost'.

Tente criar um usuário do host localhost com o mesmo nome de usuário.

Eu posso estar realmente errado.

    
por 08.09.2012 / 05:27