Назад | Перейти на главную страницу

Не удается удаленно подключиться к серверу MySQL в Ubuntu 10.10

Хорошо, я два дня искал в Google, пытаясь заставить это работать. Вот шаги, которые я сделал на данный момент:

  1. Чистая установка Ubuntu 10.10
  2. Установите mysql 5.1 и admin
  3. Закомментируйте адрес привязки в файле конфигурации
  4. Создать новую базу данных
  5. Создайте нового пользователя с именем пользователя @%, чтобы разрешить удаленные подключения
  6. Предоставить этому пользователю полный доступ к новой базе данных, ЗА ИСКЛЮЧЕНИЕМ опции предоставления
  7. Вход на сервер в порядке, используя этого нового пользователя и базу данных на локальном хосте.
  8. Вход на сервер в порядке, используя этого нового пользователя и базу данных на IP-адресе внутренней сети сервера
  9. Вход с удаленного компьютера возможен с использованием этого нового пользователя и базы данных с использованием IP-адреса внутренней сети.
  10. Вход не работает при входе в систему с этим именем пользователя и базой данных с использованием внешнего IP-адреса с сервера или удаленного компьютера.
  11. У меня включена переадресация портов для этого порта, и он доступен для просмотра извне, что подтверждено canyouseeme.org
  12. Я использовал 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 секунды

  13. Я использую 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"

Я не знаю, что еще предложить. Все указывает на то, что порт закрыт.