Хорошо, я два дня искал в Google, пытаясь заставить это работать. Вот шаги, которые я сделал на данный момент:
Я использовал nmap с помощью следующей команды на внутреннем ip и получил результат ниже:
nmap -PN -p 3306 192.168.1.73
Запуск Nmap 5.21 ( http://nmap.org ) at 2011-02-19 13:41 PST Отчет о сканировании Nmap для имя-системы-имя-компьютера (192.168.1.73). Узел работает (задержка 0,00064 с). СОСТОЯНИЕ ПОРТА СЛУЖБЫ 3306 / tcp открыть mysql
Выполнено Nmap: 1 IP-адрес (1 хост включен) просканирован за 0,23 секунды
Я использую nmap, используя следующую команду на внутреннем IP-адресе, и получаю следующий результат (у меня скрытый IP-адрес по очевидным причинам):
nmap -PN -p 3306 ххх.ххх.хх.ххх
Запуск Nmap 5.21 ( http://nmap.org ) в 2011-02-19 13:42 PST Отчет о сканировании Nmap для HOSTNAME (xxx.xxx.xx.xxx). Узел работает (задержка 0,00056 с). СОСТОЯНИЕ ПОРТА СЛУЖБЫ 3306 / tcp закрыто mysql
Выполнено Nmap: 1 IP-адрес (1 хост активен) сканируется за 0,21 секунды
Я застрял здесь и нуждаюсь в помощи. Я перепробовал все под луной и до сих пор не могу подключиться с удаленного внешнего IP-адреса. Любая помощь приветствуется, и мне нужно сделать все, чтобы помочь найти проблему, дайте мне знать, и я опубликую здесь результаты.
Я бы вообще не хотел выставлять MySQL в Интернете. Я бы выставил 22 порт и ssh снаружи. Перенаправьте локальный порт через туннель SSH на порт 3306 на удаленном сервере, как показано в первой команде ниже. Затем подключитесь к удаленному серверу через порт 3306, подключившись к порту, к которому вы привязали его локально, как показано во второй команде.
например.:
ssh -L 3307:0:3306 mysql@remotehost
(другая оболочка :)
mysql -P 3307 -h localhost -u user -p
Обратите внимание, что вы сможете подключаться к MySQL cli и работать с ним только в этой второй оболочке, пока первая открыта. Возможно, потребуется исследовать SSH Keep-Alives. Обратите внимание, что вы также можете использовать этот тип туннеля SSH на компьютере с Windows с помощью Putty.
забавно то, что у меня сработало следующее: я выполнил эту команду, которую кто-то предложил выше: 'netstat -plunta | grep: 3306', а затем я заметил, что apache и ssh работали с внешним и локальным адресом 0.0.0.0. , тогда как mysql имел локальный адрес 127.0.0.1, как и следовало ожидать. Поэтому я изменил его на 0.0.0.0, как и остальные, и в сочетании с предоставлением привилегий в mysql другим хостам это сработало!
Короче говоря, 0.0.0.0 функционировал как своего рода подстановочный знак при установке в качестве адреса привязки.
Проверить bind-address
в /etc/mysql/my.cnf
поскольку он установлен на 127.0.0.1
по умолчанию в системах на базе Debian. Если вы хотите иметь возможность подключаться к нему с другого компьютера помимо localhost, вам нужно будет изменить это и перезапустить mysql для этого.
Вы можете подтвердить это, запустив netstat -plunta |grep :3306
как root, и вы, вероятно, увидите, что он привязан только к 127.0.0.1, и когда вы измените my.cnf и перезапустите, этого больше не будет.
Вы пробовали редактировать файл
/etc/mysql/my.cnf
Убедитесь, что строка skip-network закомментирована (или удалите строку) и добавьте следующую строку
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = EXTERNAL(!!) IP SERVER
# skip-networking
Также убедитесь, что у пользователя есть права на базы данных
mysql> CREATE DATABASE test;
mysql> GRANT ALL ON test.* TO user@'IP' IDENTIFIED BY 'supersecretpassword';
Независимо от того, что вы говорите: «Мне переслали», на самом деле похоже, что это не так.
Может быть, вы можете наблюдать за подключениями с помощью netstat?
watch -n1 "netstat -an|grep 3306"
Я не знаю, что еще предложить. Все указывает на то, что порт закрыт.