Como usar o Cloud SQL para MySQL

Nesta página, mostramos como se conectar a uma instância do Cloud SQL para MySQL segunda geração a partir de um aplicativo do App Engine e como fazer leituras e gravações no Cloud SQL. O Cloud SQL é um banco de dados SQL que reside na nuvem do Google.

Para saber mais sobre o Cloud SQL, consulte a documentação do Cloud SQL. Para informações sobre preços e limites do Cloud SQL, consulte a página de preços do Cloud SQL. Os aplicativos do App Engine também estão sujeitos às cotas dessa plataforma.

Antes de começar

  1. Crie ou selecione um projeto do GCP no Console do GCP e verifique se o projeto inclui um aplicativo do App Engine e se o faturamento está ativado:
    Acessar o App Engine

    O Painel será aberto se houver um aplicativo do App Engine no projeto e o faturamento estiver ativado. Caso contrário, siga as instruções para escolher uma região e ativar o faturamento.

  2. {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  3. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %} Configure um projeto do Console do GCP.

    Configurar um projeto

    Clique para:

    • criar ou selecionar um projeto;
    • ativar {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}obrigatória{% dynamic endif %}{% dynamic if "," in setvar.api_list %} APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} para o projeto;
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • criar uma conta de serviço;
    • fazer o download de uma chave privada como JSON.
    • {% dynamic endif %}

    É possível ver e gerenciar esses recursos a qualquer momento no Console do GCP.

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %} Ativar {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}obrigatória{% dynamic endif %}{% dynamic if "," in setvar.api_list %} APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}. {% dynamic endif %}

    Ativar {% dynamic if "," in setvar.api_list %} as APIs{% dynamic else %} a API{% dynamic endif %}

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  4. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}
  5. Para implantar o aplicativo com a ferramenta gcloud, você precisa fazer o download, instalar e inicializar o SDK do Cloud:
    Fazer o download do SDK
  6. Instale o .NET Core SDK, versão LTS.
  7. Se você estiver usando o Visual Studio, será necessário instalar as ferramentas do .NET Core para criar e executar aplicativos do .NET Core.
  8. Se você estiver usando o Visual Studio, instale o Google Cloud Tools for Visual Studio para facilitar a implantação no App Engine.

Como configurar a instância do Cloud SQL

Para criar e configurar uma instância do Cloud SQL, siga estas etapas:

  1. Crie uma instância do Cloud SQL segunda geração.
  2. Defina a senha do usuário padrão na instância do Cloud SQL caso ainda não o tenha feito:
    gcloud sql users set-password root --host=% --instance [INSTANCE_NAME] --password [PASSWORD]
    
  3. Se não quiser usar o usuário padrão para se conectar, crie um usuário.

Configurar o acesso SSL à instância do Cloud SQL

  1. Siga as instruções para criar um certificado de cliente e exigir o SSL.

  2. Na página "Detalhes da instância", clique em Controles de acesso > Autorização.

  3. Clique em + Adicionar rede.

  4. Digite all para o nome.

  5. Digite 0.0.0.0/0 para a rede.

  6. Clique em Concluído e em Salvar.

  7. Para gerar um arquivo client.pfx dos arquivos de certificado criados na etapa 1, digite na linha de comando:

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

    Se você não tiver uma máquina com openssl instalado, use o SDK do Cloud.

  8. Substitua o arquivo client.pfx no projeto dotnet-docs-samples\appengine\flexible\CloudSql pelo client.pfx criado.

Como configurar a string de conexão e adicionar uma biblioteca

Configure o ambiente local para oferecer suporte a conexões de testes locais.

Por exemplo, na amostra de código fornecida, inclua a string de conexão no arquivo appsettings.json.

A string de conexão inclui o usuário, a senha e o endereço IP:

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

A string de conexão é usada para criar a conexão:

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);

Como executar o código de amostra

A amostra abaixo grava as informações de visita no Cloud SQL. Em seguida, ela lê e retorna as últimas dez visitas:
// 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);
}

Como testar e implantar

Visual Studio

Para testar o aplicativo no local, siga estas etapas:

  1. No Visual Studio, abra dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln.
  2. Pressione F5.

Para implantar o aplicativo, siga estas etapas:

  1. No "Gerenciador de soluções", clique com o botão direito do mouse em CloudSql e selecione Publicar CloudSql no Google Cloud...
  2. Clique em App Engine Flex.
  3. Clique em Publicar.

Linha de comando

Para testar o aplicativo no local, siga estas etapas:

  1. Execute os seguintes comandos no diretório dotnet-docs-samples\appengine\flexible\:
    dotnet restore
    dotnet run
  2. No seu navegador da Web, acesse http://localhost:5000/.
  3. Na janela do terminal, pressione Ctrl+C para sair do servidor da Web.

Para implantar o aplicativo, siga estas etapas:

  1. Navegue até o diretório dotnet-docs-samples\appengine\flexible\.
  2. Execute os seguintes comandos:
    dotnet restore
    dotnet publish
    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
  3. Inicie o navegador e execute o comando a seguir para ver o aplicativo em http://[YOUR_PROJECT_ID].appspot.com:
    gcloud app browse

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para documentos .NET