iRo*_*tia 5 javascript mysql google-cloud-sql firebase google-cloud-functions
我收到一个如下所示的错误(在我的函数日志中)
用户访问被拒绝\'varun_admin\'@\'cloudsqlproxy~84.117.112.32\' (using password: YES)',
sqlMessage:
`\'varun_admin\'@\'cloudsqlproxy~84.117.112.32\' (using password: YES)',`
sqlState: '28000',
Run Code Online (Sandbox Code Playgroud)
fatal: true } ( 84.117.112.32) 有意修改。
我仔细检查了我username的password,事实上,我从工作台提出了请求,一切顺利。
这就是我创建/初始化 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
})
Run Code Online (Sandbox Code Playgroud)
以下函数通常会调用以获取数据
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)
})
})
})
}
Run Code Online (Sandbox Code Playgroud)
知道我可能做错了什么吗?
SQL日志
更新:1
这些是我传递给 Cloud SQL Config 的环境值
(请参考上面的代码片段)
UI 中我的 cloudSQL 配置如下所示
我如何调用函数/调用它们,它的 NodeJS 代码在上面。
您收到的错误可能是由您的密码或正在使用的 SSL 加密问题引起的,如文档的验证连接方式部分中所述。
\n\n实际上,我尝试按照文档的“强制 SSL/TLS”部分的建议,尝试通过将实例配置更改为“仅允许 SSL 连接”来查看是否可以重现该问题。但是,它并没有 \xe2\x80\x99t 对我造成问题
\n\n这通常不会成为问题,因为正如本文中提到的,当您使用cloudsqlproxy时,来自 Cloud Functions 的连接默认是加密的,但我必须对其进行测试,以防发生变化。
\n\n我还尝试更改配置以进一步限制对我的实例的访问。然而,我的连接失败的唯一一件事是禁用通过公共 IP 的连接,只允许通过私有 IP 进行连接,这使得连接甚至无法到达实例。
\n\n既然您提到您可以连接工作台,我相信您的问题有两个可能的原因:
\n\n我希望这可以帮助你。
\n确保 Cloud SQL 用户varun_admin有权从主机进行连接cloudsqlproxy~84.117.112.32。这也可能是%,但我宁愿建议仅允许连接所需的内容(仅限单个主机)。还要确保刷新 mySQL 上的权限,以便帐户更改将立即应用。另请参阅配置 SSL/TLS。
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |