我在付费帐户下在Google控制台中托管了一个nodeJS应用程序。当我尝试将NodeJS应用程序连接到localhost服务器中的MySQL数据库时,它正在工作,但是一旦我将其配置为在Google云控制台中工作,它就说无法连接到数据库。我成功创建了一个Google SQL实例,并确定用户名和密码,因为我可以通过云控制台连接到数据库。 我提到了互联网上的许多教程,但没有办法。
var con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '1234',
database: 'test'
});
con.connect(function(error){
if(error){
console.log('error');
}
else{
console.log('connected');
}
});
答案 0 :(得分:1)
由于此问题被标记为google-app-engine
,因此我认为它是您用于部署应用程序的产品。在这种情况下:
App Engine使用Unix套接字连接到Cloud SQL实例,因此您需要传递实例的连接名称,如下面的示例所示:
var con = mysql.createConnection({
host: "localhost",
socketPath: "/cloudsql/<PROJECT_ID>:<REGION>:<SQL_INSTANCE_NAME>",
user: "root",
password: "secret"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
您实际上可以通过在本地运行cloud_sql_proxy并通过UNIX套接字连接进行测试。 Using Cloud SQL for MySQL教程介绍了如何做到这一点。
编辑:
如果您使用的是App Engine Flex,也很重要,就像下面的示例一样,在您的 app.yaml 上设置正确的beta_settings:
beta_settings:
# The connection name of your instance, available by using
# 'gcloud beta sql instances describe [INSTANCE_NAME]' or from
# the Instance details page in the Google Cloud Platform Console.
cloud_sql_instances: YOUR_INSTANCE_CONNECTION_NAME
答案 1 :(得分:0)
您的本地计算机sql服务器无法连接到Google控制台,因为它没有 暴露在互联网上。您应该在某个平台上托管mssql数据库,然后 可以在Google控制台中与其连接