Топ-обновленное обновление: извинения за верхнюю публикацию; старый вопрос по-прежнему ниже по истерическим причинам, но все изменилось. Теперь это скорее вопрос Delphi, чем вопрос MySql.
Я нахожу, что из командной строки я могу получить доступ к удаленной базе данных MySql с помощью
mysql.exe -h 192.168.89.128 -u my_user -p
Итак, похоже, что я правильно настроил удаленный сервер.
Однако, когда я пробую его из Delphi с
AdoConnection.LoginPrompt:=False;//dont ask for the login parameters
AdoConnection.ConnectionString :=
Format(MYSQL_CONNECT_STRING,[ConfigurationForm.GetServerIpAddress() + ':3306',
DataBase,
ConfigurationForm.GetUserName(),
ConfigurationForm.GetPassword()]);
AdoConnection.Connected := True; //open the connection
который дает ConnectionString
Driver={MySQL ODBC 5.1 Driver};
Server=192.168.89.128:3306;
Database=mysql;User=my_user;
Password=my_password;Option=3;
Я получаю исключение
"Unknown MySql server host '192.168.89.128:3306' (11004)"
Я могу иметь halpz?
Обновление и ответ: на всякий случай, если кто-нибудь поймает и найдет это.
Проблема связана с моей строкой соединения.
Я добавлял порт к хосту Server=192.168.89.128:3306;
, когда я должен был указать их отдельно, т.е. Server=192.168.89.128;Port=3306;
, так что моя полная строка соединения
Driver={MySQL ODBC 5.1 Driver};
Server=192.168.89.128;
Port=3306;
Database=mysql;
User=eLogger;
Password=bct_eLogger;
Option=3;
Извиняюсь тем, кто лаял неправильное дерево, чтобы попытаться помочь мне. Надеюсь, что это, в свою очередь, поможет бедному кодексу Delphi. См. Также http://delphi.about.com/od/mysql/qt/mysqladoconn.htm
Возможно, ваша проблема заключается в том, что вы включаете порт в свойство server
, попробуйте переписать строку соединения без порта 3306
, поскольку это порт по умолчанию для mysql или включить этот порт в свойство port
.
что-то вроде этого
Driver={MySQL ODBC 5.1 Driver};Server=192.168.89.128;Database=mysql;User=my_user; Password=my_user;Option=3;
Driver={MySQL ODBC 5.1 Driver};Server=192.168.89.128;Port=3306;Database=mysql;User=my_user; Password=my_user;Option=3;
Проверьте, открыт ли порт
Выполните следующую команду и найдите прослушиватель ": 3306" (вы не указали UDP/TCP). Это подтвердит, что на порту что-то работает.
netstat -a -n
Полный ответ здесь на проверку портов https://serverfault.com/questions/26564/how-to-check-if-a-port-is-blocked-on-windows