如何修复:错误:无法连接到服务器 <ip 地址>:27017,连接尝试失败:连接被拒绝

eme*_*ric 5 mongodb

我正在远程服务器上运行 mongodb,并且我想在本地计算机中访问

我尝试删除 mongodb.lock 文件,也尝试过sudo mongod --repair,但这些都不适合我。

当我正在做mongo <ip address>:27017/testDB或只是简单地做时,就会发生这种情况mongo <ip address>

我越来越:

[js] Error: couldn't connect to server <ip address>:27017, connection attempt failed: SocketException: Error connecting to <ip address>:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:344:17
@(connect):2:6
exception: connect failed  

Run Code Online (Sandbox Code Playgroud)

mongo.cfg 文件如下所示:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: C:\Program Files\MongoDB\Server\4.0\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  C:\Program Files\MongoDB\Server\4.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


#processManagement:

#security:
  authorization: 'enabled'

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:
Run Code Online (Sandbox Code Playgroud)

Him*_*sal 8

打开 mongodb 配置文件:

乌班图:

sudo nano /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)

窗户:

MongoDB_installation_Directory/Server/{version}/bin/mongod.cfg 
// MongoDB_installation_Directory could be C://MongoDB or C://Program Files/MongoDB
Run Code Online (Sandbox Code Playgroud)

编辑:

# network interfaces
net:
    port: 27017
    bindIp: 0.0.0.0   #default value is 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

重启 MongoDB 服务器:

sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)

默认情况下,mongodb 配置为仅允许来自本地主机的连接。我们需要允许远程连接。在配置文件中,转到网络接口部分并将 binIp 从 更改127.0.0.10.0.0.0 允许来自所有 IP 地址的连接

您还可以启用 MongoDB Auth:

打开 mongo shell:

mongo
Run Code Online (Sandbox Code Playgroud)

在 mongo shell 内访问管理数据库。创建一个新的管理员用户。

> use admin;
> db.createUser({
      user: "admin",
      pwd: "password",
      roles: [
                { role: "userAdminAnyDatabase", db: "admin" },
                { role: "readWriteAnyDatabase", db: "admin" },
                { role: "dbAdminAnyDatabase",   db: "admin" }
             ]
  });
Run Code Online (Sandbox Code Playgroud)

现在创建数据库用户并授予他们各自数据库的角色。

> db.createUser({
      user: "user",
      pwd: "user_password",
      roles: [
                { role: "userAdmin", db: "yourDB" },
                { role: "dbAdmin",   db: "yourDB" },
                { role: "readWrite", db: "yourDB" }
             ]
  });
Run Code Online (Sandbox Code Playgroud)

在同一个配置文件中,

security:
    authorization: 'enabled'
Run Code Online (Sandbox Code Playgroud)

重新启动 MongoDB:

乌班图:

sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)

视窗:

"MongoDB_installation_Directory/Server/{version}/bin/mongod.exe" --dbpath path/to/db
// MongoDB_installation_Directory could be C://MongoDB or C://Program Files/MongoDB
Run Code Online (Sandbox Code Playgroud)

使用远程身份验证访问 mongo:

# to access the admin database
mongo -u admin -p password {public IP}/admin

# to access the other databases
mongo -u user -p user_password {public IP}/yourDB
Run Code Online (Sandbox Code Playgroud)