Como escrever meu / etc / host para ter acesso ao MySQL disponível a partir de outras máquinas da lan

1

EDIT: Eu estou tentando o Mysql de um host remoto:

mysql -u root -p -h 192.168.56.147

Mas tenho esta mensagem:

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.56.147' (111)

Já fiz isso na minha máquina de destino:

iptables -I INPUT -j ACCEPT

Quando faço um netstat, tenho isto:

root@opencv:/# netstat -ntlp | grep LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1268/mysqld
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1249/sshd
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1482/0
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      1552/1
tcp6       0      0 :::22                   :::*                    LISTEN      1249/sshd
tcp6       0      0 ::1:6010                :::*                    LISTEN      1482/0
tcp6       0      0 ::1:6011                :::*                    LISTEN      1552/1

Parece que o meu servidor escuta apenas internamente e não ouve de fora.

Aqui está meu arquivo de hosts:

127.0.0.1       localhost
127.0.1.1       opencv

# The following lines are desirable for IPv6 capable hosts
#::1     localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

Aqui está meu hosts.allow:

# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#

ALL: 192.168.0.0

E o telnet também não funciona:

root@DEBIANBASE:~# telnet 192.168.56.147 3306
Trying 192.168.56.147...
telnet: Unable to connect to remote host: Connection refused

Seguindo o comentário de Alexander K, aqui estão os detalhes da minha configuração do mysql:

root@opencv:/# find . -name "my.cnf"
./var/lib/dpkg/alternatives/my.cnf
./etc/mysql/my.cnf
./etc/alternatives/my.cnf

mas em todos os arquivos, NÃO há nenhuma linha com opções "bind-address" ou opção "skip-networking" (estou no Ubuntu 16.10)

Depois de pesquisar, o arquivo está aqui:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

Eu editei para ter isto:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

E então eu tive isso:

root@DEBIANBASE:~#  mysql -u root -p -h 192.168.56.147
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'192.168.56.153' (using password: YES)

Depois de adicionar o usuário remoto fazendo isso no meu servidor MySQL local:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.56.153' IDENTIFIED BY 'YOUR PASSWORD' WITH GRANT OPTION;
FLUSH PRIVILEGES;  

Funcionou! Obrigado Alexandre.

    
por MouIdri 14.06.2017 / 11:56

1 resposta

1

O arquivo / etc / hosts e /etc/hosts.allow não tem nada a ver com o qual o IP MySQL se liga.

Como você pode ver aqui, ele se liga apenas a 127.0.0.1 (loopback).

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1268/mysqld

Você precisa editar seu /etc/my.cnf e comentar assim:

#skip-networking
#bind-address                   = 127.0.0.1

Isso fará com que ele se vincule a todos os IPs disponíveis.

Obviamente, se você tiver vários IP's (internos e externos), você pode optar por vincular-se apenas ao IP interno.

Certifique-se também de ter um usuário root correspondente que permita o acesso do IP do qual você está se conectando.

    
por 14.06.2017 / 12:04