gpt4 book ai didi

javascript - ER_ACCESS_DENIED_ERROR CloudSQL

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:39:43 24 4
gpt4 key购买 nike

我收到一个看起来像这样的错误(在我的函数日志中)

拒绝用户\'varun_admin\'@\'cloudsqlproxy~84.117.112.32\'(使用密码:YES)'的访问,

    sqlMessage:
`\'varun_admin\'@\'cloudsqlproxy~84.117.112.32\' (using password: YES)',`
sqlState: '28000',

致命的:真实的}(84.117.112.32) 有意修改。

我仔细检查了我的用户名密码,事实上,我从 Workbench 发出了一个请求,一切正常。

这就是我创建/初始化我的 sql 的方式

const mysql = require('mysql')
const config = require('./../../config.js')


const connectionName = config.DB_CONNECTION_NAME
console.log(`Connection name: ${config.DB_CONNECTION_NAME}`)
const configSQL = {
host: config.DB_HOST,
user: config.DB_USER,
password: config.DB_PASSWORD,
database: config.DB_DATABASE
}

// Connection to cloud sql in production

if (!process.env.dev) {
configSQL.socketPath = `/cloudsql/${connectionName}`;
}

//SQL Config
const pool = mysql.createPool(configSQL)

// Checking if it was connected sucessfully or not on server startup
pool.getConnection((err, connection) => {
if (err) {
console.error('error connecting: ' + err)
return
}
console.log('connected as id ' + connection.threadId)
connection.release()
return
})

下面的函数通常会调用以获取数据

const getEverythingFromTable = tableName => {
return new Promise((resolve, reject) => {
pool.getConnection((error, connection) => {
if (error) return reject(error)
const query = `SELECT * FROM ${tableName}`
connection.query(query, (err, response) => {
connection.destroy()
if (err) return reject(err)
return resolve(response)
})
})
})
}

知道我可能做错了什么吗?

SQL 日志

enter image description here

更新:1

这些是我传递给 Cloud SQL Config 的环境值

enter image description here

(请引用上面的代码片段)

UI 中的 cloudSQL 配置如下所示

enter image description here enter image description here enter image description here

我是如何调用函数/调用它们的,它的 NodeJS 代码在上面。

最佳答案

Verify how you connect 中所述,您收到的错误可能是由于您的密码或正在使用的 SSL 加密问题引起的。文档部分。

实际上,我尝试按照 Enforcing SSL/TLS 的建议,通过将实例配置更改为仅允许 SSL 连接 来查看是否可以重现该问题。文档的一部分。但是,这对我来说不是问题

这通常不是问题,因为如 this post 中所述,当您使用 cloudsqlproxy 时,来自 Cloud Functions 的连接默认情况下是加密的,但我必须对其进行测试以防发生变化。

我还尝试更改配置以进一步限制对我的实例的访问。然而,唯一使我的连接失败的是通过公共(public) IP 禁用连接并仅允许通过私有(private) IP 连接,这使得连接甚至无法到达实例。

既然您提到您可以连接到 Workbench,我认为您的问题可能有 2 个原因:

  1. 您的某些字符的编码可能有问题密码,只有在尝试从env 变量。我建议你尝试使用一个非常基本的密码来查看如果你得到相同的结果。
  2. 来自的连接加密可能存在问题云功能。如果是这样的话,这将是非常具体的到您的项目,解决此问题的最佳方法是在 Google’s Issue Tracker 上打开一个问题, 或者打开一个支持万一,万一你有support plan .

希望对你有帮助

关于javascript - ER_ACCESS_DENIED_ERROR CloudSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58117314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com