如何将 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 连接起来