如何从Google App Maker作为外部mysql数据库连接到Google Cloud SQL数据库?

时间:2019-10-19 19:04:29

标签: google-cloud-sql google-app-maker

我正在尝试从我的Google App Maker应用连接到Google Cloud SQL数据库。不幸的是,我的IT员工尚未将Google App Maker设置为使用Google Cloud SQL作为默认值,因此我试图以与过去连接外部MySQL数据库相同的方式连接到数据库,但无法与公用IP地址。

我已经创建了一个Google Cloud SQL数据库,并且能够使用公共IP地址从MySQLWorkbench连接到它。我必须添加我的家用计算机的IP地址才能连接数据库。我不需要使用SSL。

我为Google App Maker应用程序创建了一个Google服务帐户。然后,我将此服务帐户包含在包含Cloud SQL数据库的Google项目中。我为其分配了Cloud SQL Admin和Cloud SQL Client的权限。

我正在App Maker中使用此代码尝试连接。与我在其他外部MySQL数据库中使用的代码相同。 ip地址34.xx.xx.xx是Google Cloud SQL实例的概述页面中列出的公共IP地址。

// App Settings

// Important Note: This is for demo purposes only, storing passwords in scripts
// is not recommended in production applications.

// DB Credentials (you need to provide these)
var address = '34.xx.xx.xx';
var db = 'Kenco_IoT_Template';
var dbUrl = 'jdbc:mysql://' + address + '/' + db;
var user = 'real_username';
var userPwd = 'real_password';

我收到此错误消息:

“正在执行对数据源ActivityTable的查询:(错误):无法建立数据库连接。请检查连接字符串,用户名和密码。请参阅自述文件并编辑数据库设置!”

我的猜测是问题在于设置Cloud SQL数据库以接受来自Google App Maker的连接。最好的解决方案是将Cloud SQL启用为Google App Maker的默认设置,但我希望现在可以使用一些替代方法。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

要使其成为答案,以便其他人可以更轻松地找到它:

答案是,您需要将appscript的IP范围列入白名单。 Cloud SQL实例上的公共IP要么需要将IP地址列入白名单以进行访问,要么需要使用Cloud SQL代理。

OP还提到他们必须将使用的Jdbc方法从getConnection()切换到getCloudSqlConnection()。