使用 MySQL 適用的 Cloud SQL

本頁面說明如何從 App Engine 應用程式連線到 MySQL 適用的 Cloud SQL 第二代執行個體,以及如何讀取及寫入 Cloud SQL。Cloud SQL 是存放在 Google 雲端系統的 SQL 資料庫。

如要進一步瞭解 Cloud SQL,請參閱 Cloud SQL 說明文件。如要瞭解 Cloud SQL 定價和相關限制,請參閱 Cloud SQL 定價頁面。App Engine 應用程式也會受到 App Engine 配額的限制。

事前準備

  1. 在 GCP 主控台中建立或選取 GCP 專案,接著確認該專案含有 App Engine 應用程式並啟用了計費功能:
    前往 App Engine

    如果您的專案中已存在 App Engine 應用程式且已經啟用計費功能,系統就會開啟「Dashboard」(資訊主頁)。否則,請按照提示選取地區,然後啟用計費功能。

  2. 啟用Cloud SQL API。

    啟用 API

  3. 如要使用 gcloud 工具部署應用程式,您必須下載、安裝 Cloud SDK,然後將 Cloud SDK 初始化:
    下載 SDK
  4. 安裝 .NET Core SDK (LTS 版本)
  5. 如果您使用的是 Visual Studio,則必須安裝 .NET Core 工具才能建構和執行 .NET 應用程式。
  6. 如果您使用的是 Visual Studio,為簡化部署至 App Engine 的程序,請安裝 Google Cloud Tools for Visual Studio

設定 Cloud SQL 執行個體

如要建立並設定 Cloud SQL 執行個體:

  1. 建立 Cloud SQL 第二代執行個體
  2. 如果您尚未在 Cloud SQL 執行個體上為預設使用者設定密碼,請先執行下列指令完成設定作業:
    gcloud sql users set-password root --host=% --instance [INSTANCE_NAME] --password [PASSWORD]
    
  3. 如果您不想使用預設使用者進行連線,請建立使用者

設定 Cloud SQL 執行個體的安全資料傳輸層 (SSL) 存取權

  1. 依照操作說明來建立用戶端憑證,並要求安全資料傳輸層 (SSL) 連線

  2. 在「執行個體詳細資料」頁面上,按一下 [存取權控管] > [授權]。

  3. 按一下 [+ 新增網路]。

  4. 名稱輸入 all

  5. 網路輸入 0.0.0.0/0

  6. 依序按一下 [Done] (完成) 及 [Save] (儲存)。

  7. 如要利用您在步驟 1 中建立的憑證檔案來產生 client.pfx 檔案,請在指令列輸入:

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

    如果您沒有已安裝 openssl 的機器,請使用 Cloud SDK

  8. dotnet-docs-samples\appengine\flexible\CloudSql 專案中的 client.pfx 檔案替換成您建立的 client.pfx

設定連線字串及新增程式庫

設定本機環境以支援本機測試的連線。

以下列提供的程式碼範例為例,將連線字串新增至 appsettings.json 檔案。

連線字串包含使用者、密碼和 IP 位址:

"ConnectionString": "Uid=aspnetuser;Pwd=;Host=cloudsql;Database=visitors"

連線字串用於建立連線:

var connectionString = new MySqlConnectionStringBuilder(
    Configuration["CloudSql:ConnectionString"])
{
    // Connecting to a local proxy that does not support ssl.
    SslMode = MySqlSslMode.None,
};
DbConnection connection =
    new MySqlConnection(connectionString.ConnectionString);

執行程式碼範例

下列範例會將造訪資訊寫入 Cloud SQL,然後讀取並傳回最後十次造訪的資訊:
// Insert a visit into the database:
using (var insertVisitCommand = _connection.CreateCommand())
{
    insertVisitCommand.CommandText =
        @"INSERT INTO visits (user_ip) values (@user_ip)";
    var userIp = insertVisitCommand.CreateParameter();
    userIp.ParameterName = "@user_ip";
    userIp.DbType = DbType.String;
    userIp.Value =
        FormatAddress(HttpContext.Connection.RemoteIpAddress);
    insertVisitCommand.Parameters.Add(userIp);
    await insertVisitCommand.ExecuteNonQueryAsync();
}

// Look up the last 10 visits.
using (var lookupCommand = _connection.CreateCommand())
{
    lookupCommand.CommandText = @"
        SELECT * FROM visits
        ORDER BY time_stamp DESC LIMIT 10";
    List<string> lines = new List<string>();
    var reader = await lookupCommand.ExecuteReaderAsync();
    HomeModel model = new HomeModel() {
        VisitorLog = new List<VisitorLogEntry>()
    };
    while (await reader.ReadAsync()) {
        model.VisitorLog.Add(new VisitorLogEntry() {
            IpAddress = reader.GetString(1),
            TimeStamp = reader.GetDateTime(0)
        });
    }
    return View(model);
}

測試與部署

Visual Studio

如要在本機測試應用程式:

  1. 在 Visual Studio 中開啟 dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln
  2. 按下 F5 鍵。

如要部署您的應用程式:

  1. 在「方案總管」中,以滑鼠右鍵按一下 [CloudSql],然後選擇 [Publish CloudSql to Google Cloud...]。
  2. 按一下 [App Engine Flex]
  3. 按一下 [Publish]

指令列

如要在本機測試應用程式:

  1. dotnet-docs-samples\appengine\flexible\ 目錄執行以下指令:
    dotnet restore
    dotnet run
  2. 在網路瀏覽器中,前往 http://localhost:5000/
  3. 在終端機視窗中,按下 Ctrl+C 來關閉網路伺服器。

如要部署您的應用程式:

  1. 瀏覽至 dotnet-docs-samples\appengine\flexible\ 目錄。
  2. 執行以下指令:
    dotnet restore
    dotnet publish
    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
  3. 執行下列指令來啟動瀏覽器,然後前往 http://[YOUR_PROJECT_ID].appspot.com 查看應用程式:
    gcloud app browse

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
.NET 文件適用的 App Engine 彈性環境