Não é possível conectar-se ao MySQL de outro servidor

1

Eu tenho dois servidores na mesma sub-rede.

  • 192.168.100.1 (mysql)
  • 192.168.100.2 (php)

O MySQL parece estar funcionando bem, mas parece que não consigo me conectar a ele. Estas são as caixas do ubuntu e iptables e o ufw não está em execução. Os seguintes comandos são todos da própria caixa do MySQL. Nenhum desses trabalhos funciona na caixa .100.2 (php).

my.cnf

#bind-address           = 127.0.0.1
bind-address = 192.168.100.1

netstat diz que isso é verdade:

[email protected] /etc/mysql $ netstat -plutn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8583/sshd       
tcp        0      0 192.168.100.1:3306      0.0.0.0:*               LISTEN      30654/mysqld    
tcp        0      0 0.0.0.0:2828            0.0.0.0:*               LISTEN      29946/monit     
tcp        0      0 0.0.0.0:1167            0.0.0.0:*               LISTEN      23175/cdp       
tcp6       0      0 :::22                   :::*                    LISTEN      8583/sshd  

telnet diz que é bom

[email protected] /etc/mysql $ telnet 192.168.100.1 3306
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.
[
5.5.40-0ubuntu0.12.04.1&KM~Se$!u??L\hw=gp{<Uvrmysql_native_password

!#08S01Got packets out of orderConnection closed by foreign host.

O cliente mysql diz que é bom:

[email protected] /etc/mysql $ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

Quando tento me conectar de .100.2 , não recebo nada da conexão até o limite de tempo:

[email protected] /etc/php5/fpm $ mysql -uroot -p -h 192.168.100.1 --connect-timeout 4
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.1' (4)

Eu posso ping .100.1 da caixa .100.2 embora com tempos de resposta de subms.

Aqui estão as configurações do Grant do MySQL:

mysql> SELECT user,host from mysql.user;
+------------------+--------------+
| user             | host         |
+------------------+--------------+
| root             | 127.0.0.1    |
| root             | 192.168.1.%  |
| root             | 192.168.100.%|
| root             | 192.168.200.%|
| root             | ::1          |
| debian-sys-maint | localhost    |
| example          | localhost    |
| o3backup         | localhost    |
| root             | localhost    |
| root             | voice-mysql  |
+------------------+--------------+
10 rows in set (0.00 sec)

Eu adicionei uma nova concessão para todos os lugares e o problema persiste.

mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                            |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '...' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Atualizar

Acontece que o sistema foi bloqueado de alguma forma por alterações feitas em arquivos de sistema que eu não sabia. Aparentemente, estava bloqueando certas operações de rede que não são padrão. Isso é francamente frustrante que as mesmas pessoas que me deram essa caixa se esqueceram disso. Eu sinceramente não tenho idéia do que eles fizeram e nem conseguem se lembrar. No entanto, as respostas listadas aqui são o guia de resolução de problemas mais completo para pessoas normais. Deve ter sido um desses problemas.

    
por Xeoncross 12.12.2014 / 21:23

2 respostas

2

Parece que você está recebendo o prompt Enter password: ao se conectar ao seu servidor mysql do seu servidor php, mas nada depois disso. Nesse caso, as configurações da conta do usuário mysql para o usuário root provavelmente estão negando a conexão. Dê uma olhada na sua conta de usuário root mysql e verifique se o campo Host está definido para permitir a conexão.

De (MySQL) Causas de Erros Negados pelo Acesso :

If you do not know the IP address or host name of the machine from which you are connecting, you should put a row with '%' as the Host column value in the user table.

After trying to connect from the client machine, use a SELECT USER() query to see how you really did connect. Then change the '%' in the user table row to the actual host name that shows up in the log. Otherwise, your system is left insecure because it permits connections from any host for the given user name.

Eu suspeito que o modo como as tabelas são classificadas quando você se conecta está causando problemas. Você pode verificar o Controle de acesso, Estágio 1: verificação de conexão

    
por 12.12.2014 / 21:51
0

Leia o bom manual do erro 2003 no link

    
por 12.12.2014 / 22:52