在Windows Service中建立MySql连接

本文关键字:MySql 连接 建立 Windows Service | 更新日期: 2023-09-27 18:05:33

我在Visual Studio 2015中使用c#。我写了一个windows窗体应用程序,创建一个对象并序列化它。该对象包含可用于构造MySQL选择命令的信息。所有这些都运行良好。

现在我正在写一个Windows服务,使用这些对象来监视MySQL数据库。我已经能够在我的电脑上安装并运行windows服务,所以我知道它工作得很好。

我能够连接到MySQL与windows服务,以便它可以监控数据库。现在,我在OnStart方法中使用以下代码:

try{
    string connectionString = @"server=my_server;database=my_database;userid=my_username;password=my_password;";
    MySqlConnection conn = new MySqlConnection(connectionString);
    conn.Open()
catch(Exception ex)
{
    //Log error
}

问题是这个程序将在多个数据库上使用,所以连接字符串中的密码需要更改。我可以很容易地将连接字符串保存到序列化对象,但我不知道安全获取密码的正确方法是什么。是否有一种不同的,更好的方法从windows服务连接到MySQL ?我是windows服务的新手,所以如果我错过了一些简单的东西,我很抱歉。

[编辑]

我确实考虑的一件事是从Windows窗体应用程序发送一个SecureString到Windows服务(这是我不知道如何做的事情),然后在Windows服务中使用它来连接。这种方法的唯一问题是,如果服务关闭,那么这些密码就会丢失,需要重新输入。

在Windows Service中建立MySql连接

您可以在app.config中加密连接字符串。看看这个:https://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx

但是这样你就不能手动编辑配置,因为它看起来像这样:

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>