正在 Windows 服务中建立 MySql 连接

Establishing MySql connection in Windows Service

我在 Visual Studio 2015 年使用 C#。我编写了一个 windows 表单应用程序来创建一个对象并将其序列化。该对象包含可用于构造 MySQL select 命令的信息。所有这些都很好。

现在我正在编写一个 Windows 服务来使用这些对象来监视 MySQL 数据库。我已经能够在我的计算机上安装 windows 服务和 运行,所以我知道它工作正常。

我可以使用 windows 服务连接到 MySQL,以便它可以监控数据库。现在,我在 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 服务的新手,所以如果我遗漏了一些简单的东西,我很抱歉。

[编辑]

我确实考虑过的一件事是将 SecureString 从 Windows 表单应用程序发送到 Windows 服务(我还不知道该怎么做)然后在windows 连接服务。我可以看到该方法的唯一问题是,如果服务关闭,那么这些密码就会丢失,需要重新输入。

您可以对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>