gpt4 book ai didi

mysql - 无法使用 nodejs(openshift 应用程序)连接到 MySQL 数据库

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:12 24 4
gpt4 key购买 nike

我有一个 nodejs(带有 express)openshift 应用程序,它有一个 MySQL 数据库(因为这是我最熟悉的),但我不知道如何在本地环境中连接到它。我的上一个项目使用带有 mamp 的 php 框架来连接到本地数据库。 Node 的等价物是什么?这是我必须连接的代码:

 var mysql = require('mysql');

var connection = mysql.createConnection({
host : '127.0.0.1',
port : '3307',
database : 'test'

});

 connection.connect( function(err){
if (err){
throw err;
}
else {
console.log('Connected');
}
});

这是尝试本地连接时的错误:

 Error: connect ETIMEDOUT
at errnoException (net.js:901:11)
at Object.afterConnect [as oncomplete] (net.js:892:19)
--------------------
at Protocol._enqueue (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:110:26)
at Protocol.handshake (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:42:41)
at Connection.connect (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/Connection.js:98:18)
at Object.<anonymous> (/Users/brandonmoffitt/stembudsnode/server.js:16:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)

我猜是因为我试图在本地连接到由 openshift 设置的 MySQL 数据库,所以我收到了错误。我只是不知道在这里还能尝试什么。我也试过没有密码。

如果我为主机切换到本地主机,这是我收到的错误:

Error: ER_DBACCESS_DENIED_ERROR: Access denied for user ''@'localhost' to database 'stembuds'
at Handshake.Sequence._packetToError (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
at Handshake.ErrorPacket (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/sequences/Handshake.js:91:18)
at Protocol._parsePacket (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:202:24)
at Parser.write (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.<anonymous> (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/Connection.js:72:28)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:736:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
--------------------
at Protocol._enqueue (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:110:26)
at Protocol.handshake (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/protocol/Protocol.js:42:41)
at Connection.connect (/Users/brandonmoffitt/stembudsnode/node_modules/mysql/lib/Connection.js:98:18)
at Object.<anonymous> (/Users/brandonmoffitt/stembudsnode/server.js:16:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)

抱歉这篇文章太长了,我只是不知道为什么它不起作用。

编辑:

我通过 ssh 进入 openshift shell 查看 mysql 设置。当我执行“show grants\g”命令时,这是我收到的:

  Grants for adminMYXaSuf@127.11.28.130

GRANT ALL PRIVILEGES ON *.* TO 'adminMYXaSuf'@'127.11.28.130' IDENTIFIED BY PASSWORD '*D0CE5FA2AAD801A33C9190D0B615CC92F364BE6B' WITH GRANT OPTION

此密码与 openshift 提供的密码不同。

最佳答案

你读过他们的文档了吗?如果你有负载平衡器,你的 mysql 将安装在另一个设备上。安装墨盒时需要使用环境变量

port
OPENSHIFT_MYSQL_DB_PORT=44331

host
OPENSHIFT_MYSQL_DB_HOST=12345600a4382ec97a10000f7-somehost.rhcloud.com

OPENSHIFT_MYSQL_DB_PASSWORD=somerandompassword

username
OPENSHIFT_MYSQL_DB_USERNAME=yourusername

启动应用时将变量作为参数传递。

查看 Node 示例 https://github.com/openshift-quickstart/nodejs-example/blob/master/server.js

只需使用 process.env.OPENSHIFT_MYSQL_DB_HOST 之类的环境变量来替换数据库连接中的字符串。

 var mysql = require('mysql');

var connection = mysql.createConnection({
host : process.env.OPENSHIFT_MYSQL_DB_HOST,
user : process.env.OPENSHIFT_MYSQL_DB_USERNAME,
password : process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
port : process.env.OPENSHIFT_MYSQL_DB_PORT,
database : process.env.OPENSHIFT_APP_NAME
});

关于mysql - 无法使用 nodejs(openshift 应用程序)连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22152992/

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