Você deve procurar criar um serviço da web (SOAP), http web-api (REST) ou algum outro middleware para abstrair seu armazenamento de dados.
Isso tem os benefícios de:
- Permite que você mova grande parte da lógica de negócios do seu aplicativo de desktop para o middleware
- Permite manter a lógica de negócios fora do sql, o que pode ser um gargalo
- Permite que você atualize sua lógica de negócios sem redistribuir seu aplicativo de desktop (mais fácil se você não tiver controle direto de todos os desktops).
- Permitindo que você controle a autenticação (muitos servidores web têm seus próprios módulos, método de autenticação). Seu aplicativo controlaria o acesso e o armazenamento de acesso em sua própria conta de serviço.
- Permite que você altere completamente seu armazenamento de dados (digamos que no futuro você armazene alguns em sql, alguns em mongodb, alguns em armazenamento em nuvem - mais uma vez, sem precisar atualizar todos os seus desktops.
- Permite dimensionar seus front-ends e até mesmo dimensionar seu armazenamento de back-end (por exemplo, ler/gravar réplicas de banco de dados)
Se você já está trabalhando com C#, a nova web-api MVC4 deve ser uma boa opção. Leia mais aqui:
http://www.asp.net/web-api
Se você seguir esse caminho, poderá controlar o acesso em seu serviço e fazer com que seu serviço acesse o banco de dados por meio de credenciais em uma cadeia de conexão ou, se usar o IIS, credenciais no pool de aplicativos mapeadas para seu site.
Se você estiver enviando seu aplicativo de desktop (você não está hospedando o banco de dados), também poderá hospedar a API da Web em seu próprio exe se seus clientes não quiserem instalar/gerenciar o IIS.
Finalmente, se seu mysql estiver online, seu middleware pode estar na nuvem (azure etc...)