Tenho dois servidores na mesma sub-rede.
- 192.168.100.1 (mysql)
- 192.168.100.2 (php)
O MySQL parece estar funcionando bem em sua caixa, mas não consigo me conectar a ele. Estas são caixas ubuntu e iptables e ufw não estão em execução. Os comandos a seguir são todos da própria caixa do MySQL. Nenhum deles funciona na .100.2
caixa (php).
meu.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.
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 .100.2
, não recebo nada da conexão até o tempo limite:
[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 .100.2
caixa, embora com tempos de resposta sub ms.
Aqui estão as configurações do MySQL Grant:
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)
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 de alguma forma bloqueado por alterações feitas nos arquivos do sistema que eu desconhecia. Aparentemente, estava bloqueando certas operações de rede que não são padrão. É honestamente frustrante que as mesmas pessoas que me deram esta caixa tenham esquecido tudo sobre isso. Sinceramente, não tenho ideia do que eles fizeram e nem eles conseguem se lembrar. No entanto, as respostas listadas aqui são o guia de solução de problemas mais completo para pessoas normais. Deve ter sido um desses problemas.
Parece que você está recebendo o
Enter password:
prompt ao conectar-se ao seu servidor mysql a partir do seu servidor php, mas nada depois disso. Nesse caso, as configurações da conta do usuário mysql para oroot
usuário provavelmente estão negando a conexão. Dê uma olhada em suaroot
conta de usuário mysql e verifique se oHost
campo está definido para permitir a conexão.De (MySQL) Causas de erros de acesso negado :
Suspeito que a maneira como as tabelas são classificadas quando você se conecta está causando problemas. Você pode querer revisar o Controle de Acesso, Estágio 1: Verificação da Conexão
Leia o manual fino para o erro 2003 em http://dev.mysql.com/doc/refman/5.0/en/access-denied.html