MongoDB 是一种流行的 NoSQL 数据库,被广泛应用于 Web 开发中。在使用 MongoDB 进行开发时,有时会遇到 "Connection refused" 错误,这是由于 MongoDB 无法建立连接所导致的。在本文中,我们将详细介绍如何解决这个问题,并提供示例代码以帮助读者更好地理解。
问题原因
"Connection refused" 错误通常是由于以下原因导致的:
- MongoDB 服务器未启动。
- MongoDB 服务器未配置正确的端口号。
- 防火墙或网络设置阻止了 MongoDB 的连接。
解决方法
确认 MongoDB 服务器已启动
在使用 MongoDB 之前,我们需要确保 MongoDB 服务器已正确启动。可以使用以下命令检查 MongoDB 服务器是否正在运行:
$ sudo systemctl status mongod
如果 MongoDB 服务器已启动,将会看到类似以下的输出:
-- -------------------- ---- ------- - -------------- - ------- -------- ------ ------- ------ ------------------------------------ -------- ------ ------- -------- ------- ------ --------- ----- --- ---------- -------- ---- -- --- ----- ------------------------------- ---- ---- ----- -------- ------ -- ------- ------ ---- ---- ------- ------- ---------------------------- ------- --------------- -------- ----------------
如果 MongoDB 服务器未启动,可以使用以下命令启动 MongoDB 服务器:
$ sudo systemctl start mongod
确认 MongoDB 服务器配置正确的端口号
默认情况下,MongoDB 使用 27017 端口。如果 MongoDB 服务器使用了不同的端口号,我们需要在连接 MongoDB 时指定正确的端口号。可以在 MongoDB 配置文件中查看 MongoDB 使用的端口号:
$ cat /etc/mongod.conf | grep port
如果 MongoDB 使用的是非默认端口,可以在连接 MongoDB 时指定正确的端口号。例如,在 Node.js 中使用 mongoose 连接 MongoDB 时,可以指定端口号:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:12345/mydatabase', { useNewUrlParser: true });
确认防火墙或网络设置未阻止 MongoDB 连接
防火墙或网络设置可能会阻止 MongoDB 的连接。我们需要确认防火墙或网络设置未阻止 MongoDB 的连接。可以使用以下命令检查防火墙是否允许 MongoDB 的连接:
$ sudo ufw status
如果防火墙未允许 MongoDB 的连接,可以使用以下命令允许 MongoDB 的连接:
$ sudo ufw allow 27017/tcp
示例代码
以下是使用 Node.js 和 mongoose 连接 MongoDB 的示例代码:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log('MongoDB connected!'); });
总结
在本文中,我们介绍了如何解决 MongoDB 中 "Connection refused" 错误。我们详细介绍了问题的原因,并提供了解决方法和示例代码。希望本文能够帮助读者更好地理解 MongoDB 连接问题,并提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650fab6495b1f8cacd859ab4