4.0 java远程MongoDB时报错

报错如下:

二月 13, 2019 8:26:27 下午 com.mongodb.diagnostics.logging.JULLogger log

信息: Cluster created with settings {hosts=[192.168.227.6:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=50}

二月 13, 2019 8:26:28 下午 com.mongodb.diagnostics.logging.JULLogger log

信息: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=192.168.227.6:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out

二月 13, 2019 8:26:48 下午 com.mongodb.diagnostics.logging.JULLogger log

信息: Exception in monitor thread while connecting to server 192.168.227.6:27017

com.mongodb.MongoSocketOpenException: Exception opening socket

at com.mongodb.connection.SocketStream.open(SocketStream.java:63)

at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114)

at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)

at java.lang.Thread.run(Unknown Source)

Caused by: java.net.SocketTimeoutException: connect timed out

at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

at java.net.AbstractPlainSocketImpl.connect(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)

at com.mongodb.connection.SocketStream.open(SocketStream.java:58)

... 3 more

 

Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.59.128:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException: connect timed out}}]

at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:370)

at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)

at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)

at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:166)

at com.mongodb.operation.ListCollectionsOperation.execute(ListCollectionsOperation.java:172)

at com.mongodb.operation.ListCollectionsOperation.execute(ListCollectionsOperation.java:80)

at com.mongodb.Mongo.execute(Mongo.java:736)

at com.mongodb.Mongo$2.execute(Mongo.java:723)

at com.mongodb.OperationIterable.iterator(OperationIterable.java:47)

at com.mongodb.OperationIterable.forEach(OperationIterable.java:66)

at com.mongodb.MappingIterable.forEach(MappingIterable.java:50)

at com.mongodb.MappingIterable.into(MappingIterable.java:60)

at com.mongodb.DB.getCollectionNames(DB.java:223)

at mongodbtest.TestMongodbCurd.main(TestMongodbCurd.java:13)

解决方法:

各种百度,远程连接mongodb失败,网上资料显示原因有两个:

1、mongodb的配置文件中的bind_ip 默认为127.0.0.1,默认只有本机可以连接。 此时,需要将bind_ip配置为0.0.0.0,表示接受任何IP的连接。

2、防火墙阻止了27017端口。

于是,先修改mongodb配置文件,并重启mongod服务

 

mongodb.conf文件

dbpath = /app/mongodb/data/db #数据文件存放目录

logpath = /app/mongodb/logs/mongodb.log #日志文件存放目录

port = 27017 #端口

fork = true #以守护程序的方式启用,即在后台运行

auth = true #密码验证

bind_ip = 0.0.0.0

重启mongo:

./mongod --config /opt/local/mongodb-4.0.6/bin/mongod.conf 使用配置文件启动

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值