Как записать мой / etc / host для MySQL доступ с других машин через lan

РЕДАКТИРОВАТЬ: Я пытаюсь использовать Mysql с удаленного хоста:

mysql -u root -p -h 192.168.56.147

Но у меня есть это сообщение:

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

Я сделал это уже на моей целевой машине:

iptables -I INPUT -j ACCEPT

Когда я выполняю netstat, я получаю следующее:

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

Похоже, мой сервер слушает только изнутри и не слушает извне.

Вот мой файл 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

Вот мой 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

И telnet тоже не работает:

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

Следуя комментарию Александра К, вот подробности моей конфигурации mysql:

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

, но в каждом файле НЕТ строки с опциями "bind-address" или "skip-network" (я использую Ubuntu 16.10)

После того, как вы вникнете в нее, файл находится здесь:

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

Я отредактировал так:

# 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

А потом у меня было следующее:

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)

После добавления удаленного пользователя, сделав это на моем локальном сервере MySQL:

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

Это сработало! Спасибо, Александр.

1
задан 14 June 2017 в 13:23
1 ответ

Файл /etc/hosts и /etc/hosts.allow не имеют никакого отношения к тому, к чему привязан IP MySQL.

Как вы можете видеть здесь, он привязан только к 127.0.0.1 (loopback).

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

Вам нужно отредактировать ваш /etc/my. cnf и прокомментировать следующим образом:

#skip-networking
#bind-address                   = 127.0.0.1

Это сделает его привязанным ко всем доступным IP-адресам.

Очевидно, что если у вас несколько IP-адресов (внутренних и внешних), вы можете выбрать привязку только к внутреннему IP-адресу.

Также убедитесь, что у вас есть соответствующий пользователь root, который разрешает доступ с того IP-адреса, с которого вы подключаетесь.

.
1
ответ дан 3 December 2019 в 23:29

Теги

Похожие вопросы