Коннект к серверу БД

Тема в разделе "WASM.NETWORKS", создана пользователем cresta, 24 май 2008.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Всем привет.
    Когда-то писал программу, работающую с БД mysql. Класс-обертка коннектится к локальному серверу mysql по адресу 127.0.0.1 и получает данные из БД.
    Возникла необходимость, чтобы программка работала в локальной сети.
    Сервер mysql расположен на компе, имеющем в сети адрес 192.168.0.3.

    Вопрос в том, как коннектиться из программы, находящейся на другом компе сети, к серверу БД?
    Просто в лоб замена 127.0.0.1 на 192.168.0.3 ничего не даёт.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cresta
    Читай о таблицах mysql.db, mysql.user и mysql.host. Например
    Код (Text):
    1. INSERT INTO user VALUES ('%', 'uname', PASSWORD('upassword'),...);
    2. FLUSH PRIVILEGES;
    разрешит пользователю uname с паролем upassword заходить с любого (т.к. '%') компьютера. Многоточие, потому что число/тип остальных полей зависит от версии сервера. Можно заменить в таблице mysql.user для какого-нибудь пользователя localhost на '%' и посмотреть что получилось.

    Если работать на уровне повыше, то читай о команде GRANT. Например
    Код (Text):
    1. GRANT ALL PRIVILEGES ON *.* TO uname@"%" IDENTIFIED BY 'upassword' WITH ALL PRIVILEGES;
    обрати внимание - опять '%'.

    ps синтаксис sql-команд может незначительно отличаться, в любом случае перед изменениями необходимо сделать дамп.
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Дело не в привилегиях и правах доступа. Это я уже проверял. Если блокирован доступ для юзера с другого хоста, то возникает ошибка access denied for user@host.
    У меня же другая ошибка:
    Can't connect to MySQL server on '192.168.0.3' (10061)

    Дело не доходит до проверки прав пользователя. Облом наступает на стадии коннекта к серверу.
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.331
    на 192.168.0.3 фаервол стоит?
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    файрвол не стоит.
    штатный брандмауэр отключен.
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    ты телнетом попробуй на её порт подключиться
    и тогда будеш точно знать, что точно коннекта нет, или всётаки настройки
    мускла не дают это сделать :)
     
  7. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Для начала неплохо бы посмотреть на сервере результат
    Код (Text):
    1. netstat -an
    Возможно, сервер слушает только 127.0.0.1
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    netstat выполненый на компе с адресом 192.168.0.3 (там, где установлен сервер mysql) дает такие адреса:

    Код (Text):
    1. Имя    Локальный адрес        Внешний адрес          Состояние
    2. TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
    3. TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
    4. TCP    0.0.0.0:2869           0.0.0.0:0              LISTENING
    5. TCP    127.0.0.1:1028         0.0.0.0:0              LISTENING
    6. TCP    127.0.0.1:1039         127.0.0.1:1040         ESTABLISHED
    7. TCP    127.0.0.1:1040         127.0.0.1:1039         ESTABLISHED
    8. TCP    127.0.0.1:1041         127.0.0.1:1042         ESTABLISHED
    9. TCP    127.0.0.1:1042         127.0.0.1:1041         ESTABLISHED
    10. TCP    127.0.0.1:7999         0.0.0.0:0              LISTENING
    11. TCP    127.0.0.1:8080         0.0.0.0:0              LISTENING
    12. TCP    127.0.0.1:8080         127.0.0.1:1088         TIME_WAIT
    13. TCP    127.0.0.1:8080         127.0.0.1:1090         TIME_WAIT
    14. TCP    192.168.0.3:139        0.0.0.0:0              LISTENING
    15. UDP    0.0.0.0:445            *:*
    16. UDP    0.0.0.0:500            *:*
    17. UDP    0.0.0.0:1047           *:*
    18. UDP    0.0.0.0:1048           *:*
    19. UDP    0.0.0.0:1049           *:*
    20. UDP    0.0.0.0:4500           *:*
    21. UDP    127.0.0.1:123          *:*
    22. UDP    127.0.0.1:1036         *:*
    23. UDP    127.0.0.1:1900         *:*
    24. UDP    192.168.0.3:123        *:*
    25. UDP    192.168.0.3:137        *:*
    26. UDP    192.168.0.3:138        *:*
    27. UDP    192.168.0.3:1900       *:*
    Состояние для адресов 192.х.х.х не указано.

    телнетом удается подключиться только к 127.0.0.1 на порт 1028
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    стандартно порт 3306 :) у тебя там его нет :dntknw:
    у тебя может в настройках другой забит
     
  10. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    может он там остановлен?
    аль может его в ручную там(мускл) попробывать стартануть?
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Сервер естественно запущен.

    Какой там порт, я не интересовался.
    Внесу некоторую ясность:
    программа коннектится к серверу mysql и работает с ним через libmysql.dll, которая входит в комплект пакета денвер. Я написал класс-обертку для этой dll и пользуюсь этим классом.
    По какому порту коннектиться, решает сама dll. Я порт не указываю. Только задаю адрес хоста, где расположен сервер: 127.0.0.1
    Как я понимаю, раз на локалхосте dll может разрулить, какой порт использовать, то и при коннекте на другой хост она должна суметь выбрать нужный порт. Т.к. если я перенесу и прогу и сервер на другой комп, то программа коннектится нормально.
     
  12. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    она разруливает дефулт порт
    на твоём сервере дефулт порт не открыт!
    или мускл не запущен или дефулт порт изменён :)
    кстати у мускл коннектор цпп чем не нравиться?
     
  13. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    два вопроса:
    1. при установке проги на том же компе, где и сервер, через какой порт конкретно идет соединение проги с сервером? Через 3306?
    2.если так, то как открыть порт 3306 с другой машины сети? Пусть даже не программно, вручную.

    что-то там были какие-то проблемы аннонсированы с этим коннектором, поэтому написал свой. Да и прога уже сделана, переделывать всё как-то неохота.
     
  14. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    1. 3306
    2. сервер это по дефулту
    клиент сам понимаеш как
    я давно с мускл не работал, но по нему(администрирование и прог) хорошая
    справка была на великом и могучем:)

    ps и действительно, как сказал nester7, он может быть сконфигурирован
    на прослушку только локалхост, т.е. работает но сеть банит!

    ИМХО
    какой нафиг денвер!
    это поделка для андеграудной крутизны пхп верстальшиков, они вооще балдеют
    от слова андеграунд! ложаться на бочок и мурлыкают! андеграунд - пхп верстальшики :)))))

    ставь нормальный дистрюбъютив и работай с ним!
     
  15. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cresta
    коннектится к серверу mysql и работает с ним через libmysql.dll, которая входит в комплект пакета денвер
    Afaik она входит в состав собственно сервера.

    Я проверял так. Два компьютера соединены витой парой. На одном поднят сервер (порт стандартный 3306). На другой копирую mysql.exe и libmysql.dll. Набираю в консоли
    Код (Text):
    1. mysql.exe --host=comp2 --user=root --password=... mysql
    (вместо comp2 можно указать ip-адрес, вместо многоточия разумеется пароль) если сервер не поднят, то получаю
    Код (Text):
    1. ERROR 2003 (HY000): Can't connect to MySQL server on 'comp2' (10061)
    если нет прав, то
    Код (Text):
    1. ERROR 1130 (00000): Host 'COMP1' is not allowed to connect to this MySQL server
    если поставлю % для root'а, то
    Код (Text):
    1. Welcome to the MySQL monitor.  Commands end with ; or \g.
    2. Your MySQL connection id is ... to server version: 5.0.16-nt
    3.  
    4. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    5.  
    6. mysql>
    Покажи содержимое полей host и user таблицы mysql.user.
     
  16. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    q_q
    а ты не заметил что дефулт 3306 порт там не открыт?
    я не думаю что mysql.exe будет сканировать весь доступный
    диапозон портов, для точного коннекта ;)
     
  17. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    wsd
    а ты не заметил что дефулт 3306 порт там не открыт?
    Там это где?

    я не думаю что mysql.exe будет сканировать весь доступный
    Он(а) понимает
    Код (Text):
    1. -P, --port=#        Port number to use for connection.
     
  18. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    q_q
    хватит ругаться!
    1. постами выше криста показывал открытые порты на сервере
    2. при чём тут "--port" если он может быть не открыт, или открыт не
    понятно где!!! типа руками по диапазону "0..65536" брутить :)
     
  19. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    значит так: порт 3306 открывается сервером mysql. Если сервер запущен, то telnet'ом я могу зайти на 127.0.0.1 3306 (выводит версию сервера и ещё какую-то хрень). Если сервер выключить, то коннект к порту 3306 не проходит.
    Пробовал с другой машины сделать open 192.168.0.3 3306 - не открывается :dntknw: сервер при этом запущен.
    Почему?
     
  20. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    cresta
    это всё настройки сервера, про которые толкал nester7
    т.е. вариант с прослушиванием именно только локалхост
    лезем на мускл.сом и качаем русские доки по настройке, оформлены они хорошо :)