A porta 3306 parece estar fechada no meu servidor Ubuntu

33

Eu tenho dois servidores VPS e o MySQL está instalado, um para teste e outro para desenvolvimento. Um dos meus servidores não me permite conectar de fora. Com o usuário;

'mytestuser' @ '%'

De acordo com um localizador de porta aberta , a porta 3306 para o servidor incorreto parece estar fechada. Eu tenho programas C ++ e Java de minha própria audição em portas arbitrárias sem problemas. Por que isso está acontecendo e como posso corrigi-lo?

O Ubuntu instalado é o Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Resultados de netstat -tupleem cada servidor

Servidor infrator

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Servidor de trabalho

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
Andy
fonte

Respostas:

76

O problema era que o servidor estava escutando apenas internamente.

Removendo a linha bind-address 127.0.0.1de /etc/mysql/my.cnfresolvido o problema.

Versões mais recentes do Ubuntu (≥16.04) podem conter esta linha /etc/mysql/mysql.conf.d/mysqld.cnf.

Andy
fonte
2
Isso funcionou para mim. Observe que o nome do arquivo correto /etc/mysql/my.cnfnão é /etc/mysql/my.conf.
Larry Battle
Alterei meu endereço de ligação para corresponder ao endereço IP externo do servidor e que funcionou para mim.
Buttle Butkus
Remova a linha completamente eo servidor irá ouvir todas as interfaces
s1mmel
Você salvou meu dia, tentando resolver esse problema há algumas semanas, obrigado!
budiantoip
9

Minha sugestão, se você tiver certeza de que as portas estão fechadas (acho estranho que um VPS tenha essa porta fechada), é necessário alterar o arquivo de configuração do MySQL para usar outra.

Simplesmente abra o arquivo de configuração no terminal sudo nano /etc/mysql/mysql.conf, e procure a [mysqld]seção. Nele, procure a linha que lê port = 3306. Altere-o para outra porta não usada e salve o arquivo.

Em seguida, basta reiniciar o VPS ou reiniciar o serviço, como sudo service mysql restart.

Apenas observe que, se o arquivo mysql.confnão estiver no mencionado acima, ele poderá estar nesses outros lugares:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

E se o servicecomando não funcionar, faça o seguinte:

sudo /etc/init.d/mysql restart

Se o problema persistir, no meu caso, eu verificaria o iptables (na verdade, excluiria tudo do iptables apenas para começar novamente, se isso pudesse ser uma opção) ou qualquer outra opção ativada por firewall.

Como eles são VPS, eu também verificaria o Painel de Controle do VPS para ver se ele tem alguma opção que possa bloquear portas.

Além disso, eu executaria nmapno VPS para ver quais portas você abriu. Você precisa executá-lo de fora do VPS para ver quais portas eles abriram.

netstat -tuplen Também é uma boa idéia ver quais portas abertas você possui no servidor e quais estão no modo LISTEN.

Luis Alvarado
fonte
Ei, eu tentei em outra porta e ainda sinto falta de comportamento, também tentei 'iptables -A INPUT -i eth0 -p tcp -m tcp --dport PORT -j ACEITAR', mas sem sorte :( .. edit im not o eth0 .. ainda pode ter esperança. #
AndyMay
@ Andy Resposta atualizada para incluir mais algumas sugestões.
Luis Alvarado
Obrigado pelas sugestões Luis, vou analisar isso.
Andy
Atualizei os resultados de netstat -tuple para a pergunta. Parece que há um problema aqui.
21313 Andy
6

Corrigi isso alterando bind-address 127.0.0.1para bind-address 0.0.0.0in /etc/mysql/mysql.conf.d(para que o MySQL escute em todas as portas).

Além disso, configurei uma conta de usuário mysql para ser usada remotamente (consulte https://stackoverflow.com/a/24171107/132374 ).

Jon Onstott
fonte
6

Eu uso este método:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Não há necessidade de alterar outros arquivos de configuração e nenhuma porta extra aberta por padrão.

ftcosta
fonte
sudo ufw allow 3306/tcpEu tentei editar, mas não me deixou
Adam
1

Pode acontecer que sua configuração esteja no diretório /etc/mysql/mysql.conf.d/mysqld.cnf, verifique se não é esse o caso.

inverno
fonte
1
Eu estava tentando descobrir isso por três horas antes de ver isso, obrigado!
Oliver Ni