Servidor MySQL não acessível a partir de máquina remota

14

Eu instalei o servidor MySQL no meu servidor Ubuntu local (11.10). Não consigo conectar ao servidor de uma máquina remota.

Quando tentei: - nmap localhost , Ele mostra o seguinte

SERVIÇO DO ESTADO DO PORTO
22 / tcp ssh aberto
80 / tcp http aberto
139 / tcp aberto netbios-ssn
Microsoft-ds abertos 445 / tcp
Ipp aberto 631 / tcp
MySQL aberto 3306 / tcp

Isso significa que 3306, a porta MySQL está aberta, certo? Mas quando tentei nmap 192.168.0.50, que é o IP do servidor, recebo o seguinte: -

SERVIÇO DO ESTADO DO PORTO
22 / tcp ssh aberto
80 / tcp http aberto
139 / tcp aberto netbios-ssn
Microsoft-ds abertos 445 / tcp

Isso significa que a porta não está aberta ao acessar usando IP? Se sim, como faço para abrir a porta?

Eu tentei o código a seguir, mas parece que não funcionou.

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

O que há de errado aqui?

Sparky
fonte

Respostas:

22

Seu serviço MySQL é obrigado a servir apenas localhost (ligação de interface). Esse é o padrão por motivos de segurança. Se você realmente precisa acessá-lo diretamente de outros hosts, há um bom Como habilitar o acesso remoto ao MySQL no Ubuntu, que você pode seguir:

  1. como root, abra seu /etc/mysql/my.cnfou /etc/mysql/mysql.conf.d/mysqld.cnf com seu editor favorito, pois em diferentes sistemas ele é considerado diferente.
  2. procure a [mysqld]seção e a bind-addresspalavra - chave. Isso geralmente está definido como 127.0.0.1- altere para corresponder ao seu endereço IP "normal"
  3. salve o arquivo e recarregue o serviço (por exemplo, usando service mysql restart)

Lembre-se de que você deve permitir que seus usuários remotos acessem seus bancos de dados remotos, definindo as GRANTs apropriadas - por exemplo,

GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Observe o @'%', que significa "de qualquer host".

Izzy
fonte
Fico feliz em ler - e de nada!
Izzy
link está quebrado :(
dino
2
@dino Já não. Corrigi isso e também incluí um trecho, portanto, se ele morrer novamente, as etapas necessárias ainda estarão aqui. Pena que não o fiz desde o início - mas como você pode ver no registro de data e hora, essa foi uma das minhas primeiras respostas. Nós todos aprender :)
Izzy
2
O campo de endereço de ligação estava no /etc/mysql/mysql.conf.d/mysqld.cnfmeu sistema.
Eric G
@ EricG Obrigado pelo ponteiro. Minha resposta foi há 5 anos, então as configurações mudaram um pouco (e provavelmente se tornaram mais modulares).
Izzy,