【问题标题】:Issue with connecting my express server on heroku to the remote mySQL将heroku上的快速服务器连接到远程mySQL的问题
【发布时间】:2019-02-16 19:08:08
【问题描述】:

我正在尝试在 Heroku 上部署我的 express 服务器,它需要连接到远程 MySQL 数据库。

我使用了 'heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename 和正确的信息,但它仍然尝试通过错误的地址进行连接。

我还使用了 'heroku config:add EXTERNAL_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename 和正确的信息,但它仍然尝试通过错误的地址进行连接。

在“配置变量”部分的“设置”下的 Heroku 应用程序面板中,我看到 DATABASE_URL 和 EXTERNAL_DATABASE_URL 出现了正确的信息。但是在heroku日志中我仍然看到错误的信息

这是我在 express 服务器上的 sequelize 变量:

const sequelize = new Sequelize('dbName', 'USER', 'Password', {
host:"hostAddress",
dialect: 'mysql'

}

但我在 Heroku 日志上看到以下内容:

2019-02-16T18:31:42.231390+00:00 app[web.1]: Unhandled rejection 
SequelizeAccessDeniedError: Access denied for user 
'USER'@'ec2-54-162-8-141.compute-1.amazonaws.com' (using 
password: YES)

如何将 'ec2-54-162-8-141.compute-1.amazonaws.com' 更改为远程 MySQL 主机地址?

【问题讨论】:

  • 请检查服务器 ec2-54-162-8-141.compute-1.amazonaws.com 端口 - 3306 是否打开了用户 - 数据库服务器中存在 USER

标签: heroku sequelize.js remote-mysql


【解决方案1】:

尝试使用以下方式设置变量:

if (process.env.DATABASE_URL) {
  const sequelize = new Sequelize(process.env.DATABASE_URL, {
    define: {
      freezeTableName: true, // don't make plural table names
      underscored: true // don't use camel case
    },
    dialect: 'mysql',
    dialectOptions: {
      ssl: true
    },
    logging: true,
    protocol: 'mysql',
    quoteIdentifiers: false // set case-insensitive
  });
} else {
  console.log('Fatal error: DATABASE_URL not set');
  process.exit(1);
}

【讨论】:

  • 感谢您的回复,但问题依然存在
  • heroku config:get DATABASE_URL 是否显示您尝试使用的数据库?
  • 主机名包含在DATABASE_URL 中是ec2-54-162-8-141.compute-1.amazonaws.com 还是54.162.8.141
  • 没有。这是我在运行 heroku config:get DATABASE_URL heroku config:get DATABASE_URL -a qfpfinder » 警告:heroku 更新可从 7.19.3 到 7.20.1 mysql://quickfit_adminFinder@quickfitparts.com:3306/quickfit_finder
  • DATABASE_URL 应该是这样的:mysql://user:password@hostname:port/dbname。您的 URL 似乎在用户名和密码之间缺少 :。您可以从 Internet 连接到该数据库吗?我也不明白那个 ec2 主机来自哪里。你能试试heroku config | grep ec2吗?此外,是否有可能有多个 heroku 实例,而您在使用另一个时正在查看一个?最后,如果您在此处发布了密码的任何部分,您可能需要更改密码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 2016-02-13
相关资源
最近更新 更多