如何将 Google Cloud SQL 与 C# 连接起来

Posted

技术标签:

【中文标题】如何将 Google Cloud SQL 与 C# 连接起来【英文标题】:How to connect Google Cloud SQL with C# 【发布时间】:2019-02-26 16:32:04 【问题描述】:

我只想使用 C# 在 Google Cloud 上管理我的数据库。我刚开始学习数据库。附言我不擅长英语。希望你能理解我。

【问题讨论】:

【参考方案1】:

我假设您已经创建了 Google Cloud SQL mysql 实例。

按照Connect to your Cloud SQL instance using SSL 的说明,您需要启用外部 SSL 访问并创建客户端证书。

您将下载三个文件:server-ca.pem、client-cert.pem、client-key.pem。

将MySqlConnector NuGet 包安装到您的 C# 应用程序中。

如下创建连接字符串:

var csb = new MySqlConnectionStringBuilder

    Server = "Google Cloud SQL IP address",
    UserID = "Your UserName",
    Password = "Your Password",
    Database = "Your Database/Schema Name",
    SslCert = @"C:\Path\To\client-cert.pem",
    SslKey = @"C:\Path\To\client-key.pem",
    SslCa = @"C:\Path\To\server-ca.pem",
    SslMode = MySqlSslMode.VerifyCA,
;

using var connection = new MySqlConnection(csb.ConnectionString);
connection.Open();

请注意,对于旧版本的 MySqlConnector 库,您需要将 SSL 证书和密钥合并到一个 PFX 文件中。按照these instructions,将client-cert.pem和client-key.pem转换成pfx文件:

openssl pkcs12 -inkey client-key.pem -in client-cert.pem -export -out client.pfx

然后删除Ssl*连接字符串选项并添加以下内容:

    CertificateFile = @"C:\Path\To\client.pfx",
    CACertificateFile = @"C:\Path\To\server-ca.pem",

【讨论】:

非常感谢! 如果 Google Cloud 上有 api 并且不使用 ssl,我如何连接,我是否只是跳过证书行? @Bradley Grainger 如果您的应用程序托管在 Google Cloud 中,您可能需要使用 Cloud SQL 代理:cloud.google.com/sql/docs/mysql/connect-admin-proxy @John 将您的数据库直接暴露给最终用户是极其危险的。处理此问题的典型方法是使用 Web 服务来验证客户端设备并通过 API 为用户执行数据库操作。 @John 是的,从 C# 桌面应用程序或 C# Web API(在 Google App Engine 上运行,或在您管理的服务器上运行)连接到 Google Cloud SQL 实例没有问题;我已经成功地完成了所有这些。

以上是关于如何将 Google Cloud SQL 与 C# 连接起来的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Google Cloud Platform Pub/Sub 消息推送到 C# 桌面应用程序

如何从 Cloud Functions 连接 Google Cloud SQL?

将 MySQL Workbench 与 Google Cloud SQL 连接起来

SQLAlchemy 可以与 Google Cloud SQL 一起使用吗?

将Sequelize连接到Google Cloud SQL

Google Cloud Compute Engine 是不是与 Google Cloud SQL 分开