РЕДАКТИРОВАТЬ: Я пытаюсь использовать 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
И телнет тоже не работает:
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
но в каждом файле НЕТ строки с параметрами "адрес привязки" или параметром "пропустить сеть" (я использую 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;
Это сработало ! Спасибо, Александр.
Файлы / 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-адреса, с которого вы подключаетесь.