【问题标题】:Cannot Connect to AWS RDS MySQL Database Using Express JS无法使用 Express JS 连接到 AWS RDS MySQL 数据库
【发布时间】:2020-05-15 08:25:00
【问题描述】:

我正在尝试使用 Express 框架连接到我的 Amazon RDS 云数据库。我的 server.js 连接如下所示:

const express = require('express');
var bodyParser = require('body-parser')
const mysql = require('mysql');
const cors = require('cors');
const port = process.env.PORT || 3300;
const connection = mysql.createConnection({
host     : 'endpoint-of-my-rds-database.amazonaws.com',
user     : 'user',       
password : 'password',           
database : 'database', 
port: 3300,                
socketPath: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'
});

const app = express();
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

connection.connect(function(err) {
    if(err) throw err;

    console.log("connected to database");
})

运行node server.js 后,我得到以下标准错误:

Access denied for user 'root'@'localhost' (using password: YES)

我可以使用 MySQL Workbench 以相同的凭据连接到我的云数据库。此外,我可以通过 Express 将凭据更改为本地 MySQL 数据库的凭据,从而连接到本地 MySQL 数据库。

在线研究,似乎这个错误是由于凭据无效,但是,正如我所提到的,我可以通过 Workbench 连接到我的 RDS 数据库,没有任何问题。只有 Express 似乎给我带来了麻烦。很乐意提供更多信息。任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

  • 那么你不是使用mysql的默认端口吗? 3306,而是使用 3300?
  • 我在端口 3306 上运行本地 MySQL 服务器,所以如果我将 3300 更改为 3306,我会收到“listen EADDRINUSE :::3306”错误,因为 3306 是我运行 MySQL 的地方。如果我在没有启动本地 MySQL 服务器的情况下运行 server.js 会收到错误消息:Error: connect ENOENT /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 似乎只有在我运行本地 MySQL 服务器时它才会尝试连接到 RDS 数据库。或者我完全误解了它。

标签: mysql amazon-web-services express


【解决方案1】:

您需要删除该socketPath。根据socketPath上的docs

要连接的 unix 域套接字的路径。当使用的主机和端口被忽略。

您正在覆盖其他连接详细信息并尝试连接到正在侦听该套接字的任何数据库。

线索是错误消息:'root'@'localhost'。该主机是您的连接的来源。在这种情况下,localhost 表示您正在连接到运行代码的同一台计算机上的数据库,因此您不会访问您的 RDS 实例。

如果您未能针对 RDS 实例进行身份验证,我希望看到类似 root@54.12.4.9root@ip-52-12-4-9.amazonaws.com 的内容。

【讨论】:

  • 哦,天哪,我太笨了。非常感谢您,先生,这确实成功了!
猜你喜欢
  • 2019-05-03
  • 1970-01-01
  • 2020-08-16
  • 2019-07-05
  • 2020-10-18
  • 1970-01-01
  • 2020-04-08
  • 2021-07-17
  • 2013-01-28
相关资源
最近更新 更多