【问题标题】:Can't connect to MongoDB from shared hosting无法从共享主机连接到 MongoDB
【发布时间】:2020-08-14 11:05:36
【问题描述】:

我创建了一个 node.js MongoDB webapp。它在我的本地机器上运行良好。所以我用 godaddy 托管它。
托管步骤(如果我做错了什么,请纠正我)

  • 安装nodejs到服务器
  • 解压新目录myapp中的所有文件并安装所有依赖项
  • 全局安装pm2 以使用pm2 start app.js --watch 命令保持服务器运行

但是当我尝试使用node app.js 运行它时,应用程序从端口 3000 开始,但显示数据库连接错误

我的 db 代码是 -

mongoose
  .connect(DB_URL, {
    useUnifiedTopology: true,
    useNewUrlParser: true,
    useCreateIndex: true,
  })
  .then(() => console.log("Database connected!"))
  .catch((err) => {
    console.log(`DB Connection Error: ${err.message}`);
  });

我已经允许从 atlas 中的所有 IP 进行访问。
我收到此错误消息 -

谁能告诉我如何修复它。
网络应用在本地机器和 heroku 上运行良好
这是我第一次在共享主机上工作

【问题讨论】:

    标签: node.js mongodb shared-hosting


    【解决方案1】:

    您似乎在使用 Atlas。 Atlas 要求您将任何将访问数据库的 IP 地址列入白名单。我的第一个猜测是,您在设置 Atlas 时将本地 IP 地址列入了白名单,但尚未将 GoDaddy 的 IP 地址列入白名单。

    我不使用 GoDaddy,但我在这里找到了获取服务器 IP 地址的说明:https://www.godaddy.com/help/what-is-my-websites-ip-address-in-my-linux-hosting-account-16112#:~:text=Go%20to%20your%20GoDaddy%20product,in%20the%20list%20of%20settings

    然后进入 Atlas 并将该 IP 地址添加到您的白名单中。此处提供了相关说明:https://docs.atlas.mongodb.com/security-whitelist/

    【讨论】:

    • 实际上我允许从所有 IP 访问我也尝试添加服务器的 IP 也
    • 嗯...在这一点上有点猜谜游戏。你是如何设置用户名和密码的?您是否在本地和 Heroku 上将它们设置为环境变量,但在 GoDaddy 中没有?您还可以尝试直接在 Mongoose 外部连接到数据库以尝试缩小错误范围。 mongodb.com/blog/post/… 有相关步骤。
    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2016-01-01
    • 2013-09-16
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多