2012-05-24 2 views
0

У меня есть огромная проблема с этим.Как настроить базу данных MySQL для подключения к другому компьютеру?

Что я хочу сделать: Я хочу создать систему (в C#), которая будет (между прочим) позволяет пользователям отправлять простые сообщения друг другу. Поэтому я хочу создать базу данных MySQL , которая будет опираться на сервер. Другие компьютеры, на которых запущена система, затем должны будут подключиться удаленно к этой базе данных и прочитать определенную таблицу, чтобы узнать, есть ли у них новые сообщения. Я хочу, чтобы клиентский компьютер подключался через Интернет к базе данных на сервере.

Но как мне это сделать?

  1. Как создать базу данных, к которой можно подключиться через Интернет?
  2. Как должна выглядеть строка подключения на клиентском компьютере?
  3. Какие конфигурации необходимо делать на клиентских и серверных компьютерах?

Любая помощь глубоко оценена, и если вы могли бы предложить, как я могу достичь своей цели. Я довольно компетентный программист, но НЕНАВИСТИ эти сетевые вещи!

Я разрабатываю C# с помощью WPF для доступа к базе данных. Так что это настольное приложение!

+2

Возможно, это плохая идея подключиться * напрямую * к серверу SQL через Интернет. Возможно, вместо этого вы должны построить HTTP-интерфейс, отображающий SOAP или REST API, который позволяет клиентам обращаться к бэкэнду SQL? Большинство веб-хостинговых компаний смогут разместить это для вас. –

ответ

0

Вот как вы поступаете так, как вы просите.

Используйте соединитель MySQL Connector/NET ADO.NET. Это здесь. http://dev.mysql.com/downloads/connector/net/5.1.html

Следуйте инструкциям по его настройке. Он работает очень хорошо.

Поместите ваш сервер MySQL на общедоступный IP-адрес.

Получить сборку программного обеспечения клиента для подключения к этому общедоступному IP-адресу через разъем ADO.NET.

Но, ПОЖАЛУЙСТА!

Спросите себя, правильно ли это делать. Вероятно, это не так, потому что серверы MySQL (и все серверы таблиц) работают намного безопаснее и предсказуемо, когда они находятся за брандмауэрами и принимают соединения из ограниченного числа клиентских пакетов.

Рассмотрите возможность сделать то, что предложил Майк Кристенсен. Используйте ASP.NET и WCF, или любой другой стек, который вам нравится, для создания резидентного интерфейса сервера для вашей базы данных MySQL. После этого через серверный резидентный интерфейс можно получить доступ к клиентскому программному обеспечению, которое вы нажимаете на своих конечных пользователей.

Этот интерфейс может иметь только те методы, которые вам нужны. WCF или любой другой стек для создания компонентов сервера могут сделать это легко и надежно. Например.

Client 1: This is moe. Here's a message for curly: "Look at the grouse, look at the grouse". 
Server: OK 

Client 2: This is curly: any new messages? 
Server: moe says "Look at the grouse, look at the grouse". 

Client 1: This is moe. When did curly last collect my messages? 
Server: ten minutes ago. 

Client 2: This curly. any new messages? 
Server: NO 

Это намного безопаснее и более масштабируемым, чем просто сделать интерфейс MySQL доступен в Интернете, и он будет работать гораздо лучше.

Кстати, похоже, что вам нужен протокол обмена мгновенными сообщениями.Вы можете посмотреть на использование системы с открытым исходным кодом на http://jabber.org. Это может быть сложно сделать правильно, если вы построите все это самостоятельно.

+0

спасибо за подробный ответ Олли Джонс! ;) Могу ли я просто прояснить некоторые вещи. При использовании интерфейса, такого как интерфейс WCF, это все еще означает, что моя база данных должна быть «обслуживается» или она может запускаться локально на компьютере? Дело в том, что я хотел бы хранить сообщения, которые пользователь мог получить, поэтому это не так просто, как система обмена мгновенными сообщениями. – YoungProgrammer

+0

уверен, в дальнейшем. –

+0

Извините, продолжайте нажимать «вводить» по ошибке! Я также не знаю, какие настройки или функции мне нужно взаимодействовать в Workbench для MySql, чтобы позволить удаленному доступу к базе данных ... можете ли вы помочь мне с этим, возможно ... Спасибо;) – YoungProgrammer