如何将 Google Cloud SQL 与应用程序(如 Google App Engine)和工具(如 mySQL workbench)相连接
在本文档中,我们将了解如何创建 Google Cloud SQL 实例并将其连接到你的 Google App Engine 应用程序和 MySQL Workbench 管理工具中。
Google Cloud SQL:
Google Cloud SQL 是一种完全托管的数据库服务,可以轻松地在云中设置,维护,管理和管理关系型 MySQL 数据库。
Google Cloud SQL 提供了一个可与 App Engine 应用程序一起使用的关系数据库。Cloud SQL 是一个存在于 Google 云中的 MySQL 数据库。
参考:
创建 SQL 实例:
Google Cloud SQL 实例是托管在 Google 云中的 MySQL 数据库。
-
转到 Google Cloud Platform Console 中的 Cloud SQL Instances 页面( https://console.cloud.google.com/sql/instances), 然后单击 Create instance。
-
单击选择第一代,输入名称并选择实例的层,然后单击创建。
-
实例完成初始化后,选择要打开它的实例。
-
在访问控制>用户中,单击创建用户帐户并创建名为 root 的用户并指定密码(root_password)。这会创建 MySQL 用户’root’@’%’。
-
在数据库中,单击新建数据库并使用数据库名称(DataBase_Name)创建数据库
MySQL Workbench:
MySQL Workbench 是数据库架构师,开发人员和 DBA 的统一可视化工具。MySQL Workbench 为服务器配置,用户管理,备份等提供数据建模,SQL 开发和综合管理工具。
参考 http://www.mysql.com/products/workbench/
现在,我们将了解如何使用 MySQL Workbench 连接到你的 Google Cloud SQL 实例数据库。
配置访问权限
-
转到 Google Cloud Platform Console 中的 Cloud SQL Instances 页面,然后选择该实例。
-
在访问控制>“IP 地址”中,单击“请求 IPv4 地址”并将其复制(Instance_IPv4_address)。需要将你的 Google Cloud SQL 实例数据库与 MySQL Workbench 等管理工具相连接。
注意: 实例处于非活动状态时,你将需要支付 IPv4 地址 @ $ 0.01,实例处于活动状态时每小时支付 0.1 美元
-
Google 的“IP 地址”用于查找你的公共 IP 地址
-
在访问控制>授权>授权网络中,单击添加网络并输入你的 IP 地址。
-
在访问控制>用户中,使用用户名(userName),密码(密码)和允许选择任何主机选项创建用户。建议使用单独的用户帐户从 WorkBench 进行访问
连
-
在 MySQL Workbench 主视图中,单击新建连接。
-
在设置新连接窗口中,提供连接名称,主机名和用户名
-
单击测试连接。系统将提示你输入密码。
-
MySQL 连接成功后,单击确定并单击已保存的连接以打开 SQL 编辑器
Google App Engine:
Google App Engine 是一个用于构建可扩展的 Web 应用程序和移动后端的平台。App Engine 将自动扩展你的应用程序。
请参阅 https://cloud.google.com/appengine
现在我们将看到如何在 App Engine 应用程序和 Cloud SQL 实例之间建立连接。
配置访问权限
-
转到 Google Cloud Platform Console 中的 Cloud SQL Instances 页面,然后选择该实例。
-
在访问控制>授权>“授权的 App Engine”应用程序中,单击“添加应用程序 ID”并输入应用程序 ID。单击完成并保存。
-
在概述>属性中复制实例连接名称(Instance_Connection_Name)
-
在你的 Google Web 应用项目中,war / WEB-INF / appengine-web.xml 添加,true </ use-google-connector-j>
代码示例:
谷歌应用引擎的一个 Exaple - 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;
}
}