如何将 Google Cloud SQL 与应用程序和工具连接?

How to connect Google Cloud SQL with Apps and Tools?

如何以安全的方式将 Google 云 SQL 与应用程序(如 Google App Engine)和工具(如 mySQL workbench)连接?

在本文档中,我们将了解如何创建 Google 云 SQL 实例并将它们连接到您的 Google App Engine 应用程序和 MySQL Workbench 管理工具。

Google云SQL:

Google Cloud SQL 是一种完全托管的数据库服务,可以轻松地在云中设置、维护、管理和管理您的关系 MySQL 数据库。

Google Cloud SQL 提供了一个关系数据库,您可以将其与 App Engine 应用程序一起使用。 Cloud SQL 是一个 MySQL 数据库,位于 Google 的云端。

参考:

https://cloud.google.com/sql/

https://cloud.google.com/sql/docs/

正在创建 SQL 个实例:

一个 Google 云 SQL 实例是 MySQL 数据库托管在 Google 的云中。

  1. 转到 Google 云平台中的云 SQL 实例页面 控制台 (https://console.cloud.google.com/sql/instances) 并单击 创建实例。
  2. 单击“选择第一代”,输入名称并选择一个等级 实例并单击创建。

  3. 实例完成初始化后,select实例到 打开它。

  4. 在访问控制 > 用户中,单击创建用户帐户并创建一个 名为 root 的用户并指定密码 (root_password)。这个 创建 MySQL 用户 'root'@'%'.

  5. 在数据库中,单击新建数据库并创建一个数据库 数据库名称 (DataBase_Name)

MySQL Workbench:

MySQL Workbench是面向数据库架构师、开发人员和DBA的统一可视化工具。 MySQL Workbench 为服务器配置、用户管理、备份等提供数据建模、SQL 开发和综合管理工具。

参考http://www.mysql.com/products/workbench/

现在我们将了解如何使用 MySQL Workbench.

连接到您的 Google 云 SQL 实例数据库

正在配置访问权限

  1. 转到 Google 云平台中的云 SQL 实例页面 控制台和 select 实例。

  2. 在访问控制 > IP 地址中,单击请求 IPv4 地址并复制 它(Instance_IPv4_address)。需要连接您的 Google Cloud SQL 带有管理工具的实例数据库 MySQL Workbench.

    注意:您需要为 IPv4 地址支付费用,实例处于非活动状态时每小时 0.01 美元,实例处于活动状态时每小时 0.1 美元

  3. Google 'ip address' 找到您的 public IP 地址

  4. 在访问控制 > 授权 > 授权网络中,单击添加 网络并输入您的 IP 地址。

  5. 在访问控制 > 用户中,使用用户名 (userName) 创建一个用户, 密码(密码)和选项'Allow any host selected'。这是 建议使用单独的用户帐户从 WorkBench
  6. 访问

正在连接

  1. 在 MySQL Workbench 主页视图中,单击新建连接。

  2. 在设置新连接 window 中,提供一个连接名称, 主机名和用户名

  3. 单击“测试连接”。系统将提示您输入密码。

  4. 一旦 MySQL 连接成功,点击 OK 然后点击 保存的连接打开 SQL Editor

Google 应用引擎:

Google App Engine 是一个用于构建可扩展的 Web 应用程序和移动后端的平台。 App Engine 将自动扩展您的应用程序。

参考https://cloud.google.com/appengine

现在我们将了解如何在 App Engine 应用程序和云 SQL 实例之间建立连接。

正在配置访问权限

  1. 转到 Google 云平台中的云 SQL 实例页面 控制台和 select 实例。

  2. 在访问控制 > 授权 > 授权的 App Engine 应用程序,单击添加应用程序 ID 并输入应用程序 ID。 单击完成并保存。

  3. 在概述 > 属性中复制 'Instance connection name' (Instance_Connection_Name)

  4. 在您的 Google Web 应用程序项目中, war/WEB-INF/appengine-web.xml 添加, 真

代码示例:

Google App Engine 的示例 - Java 标准环境

public static Connection connect() throws ClassNotFoundException, SQLException {
    String url = null;

    {
        if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {

            // Connecting from App Engine.
            Class.forName(Messages.getString("com.mysql.jdbc.GoogleDriver")); 
            url = Messages.getString("jdbc:google:mysql://{{Instance_Connection_Name}}/{{DataBase_Name}}?user=root&password={{root_password}}");
        } else {
            // Connecting from an external network or localhost
            Class.forName(Messages.getString("com.mysql.jdbc.Driver"));
            url = Messages.getString("jdbc:mysql://{{Instance_IPv4_address}}:3306/{{DataBase_Name}}?user={{userName}}&password={{password}}");
        }

        Connection conn = DriverManager.getConnection(url);

        return conn;
    }
}

我想补充一下牛顿所说的:

实例连接名称不只是您的"project_id:instance_id"。请转到 Google Cloud SQL 实例概述页面并复制 'Instance connection name' 字段中的值。通常 'Instance connection name' 包含区域名称或其他值,因此请小心替换它。