用户使用Mongo shell连接数据库可能出现的问题-问答-阿里云开发者社区-阿里云

开发者社区> 云栖大讲堂> 正文

用户使用Mongo shell连接数据库可能出现的问题

2017-10-31 09:47:35 1761 0
用户可以通过DMS或Mongo shell连接MongoDB云数据库,以下场景都基于用户使用Mongo shell连接数据库。

连接实例提示网络超时?# /u01/mongodb_current/bin/mongo --host dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u root -p xxx
MongoDB shell version: 3.2.3
DB Prefix:
connecting to: 10.1.2.8:3717/admin
2016-05-31T15:25:58.940+0800 W NETWORK  Failed to connect to 10.1.2.8:3717 after 5000 milliseconds, giving up.
2016-05-31T15:25:58.943+0800 E QUERY    Error: couldn't connect to server 10.1.2.8:3717 (10.1.2.8), connection attempt failed
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed




通过telnet来确认是否是网络不通导致的,例如telnet dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com 3717
网络不通可能的原因:
  • ECS跟MongoDB节点不在同一个可用区。
  • ECS跟MongoDB节点不在同一个vpc环境。


连接实例提示鉴权失败?$mongo --host dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717  --authenticationDatabase admin -u root -p xxx
MongoDB shell version: 3.2.3
connecting to: 10.1.2.8:3717/test
2016-05-31T15:50:18.623+0800 E QUERY    Error: 18 Authentication failed.
    at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
    at (auth):6:8
    at (auth):7:2 at src/mongo/shell/db.js:1271
exception: login failed




可能的原因:
  • 密码错误,可在控制台重置root密码。
  • 连接的用户跟数据库不匹配,比如root用户是admin数据库下的用户。使用root连接时,必须指定鉴权数据库为admin。
  • 客户端版本过低,Mongo shell版本必须是3.0+,其他语言客户端的版本要求参考Driver兼容性文档


连接Secondary执行执行命令时,提示slaveOk=false错误?$mongo --host dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u root -p xxx
MongoDB shell version: 3.2.3
connecting to: 10.1.2.8:3717/test
mongo-9551:SECONDARY> show dbs
2016-05-31T15:54:13.527+0800 E QUERY    Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
    at Error (<anonymous>)
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47




默认情况下,MongoDB的读写请求都必须到Primary节点,Secondary默认是不可读的,除非客户端显式的指定Secondary节点可读(通过 设置readPreference指定某个节点可读)。
Mongo shell连接时,可以执行 rs.slaveOk()来指定备可读: $mongo --host dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717  --authenticationDatabase admin -u system -p xxx
MongoDB shell version: 3.2.3
connecting to:10.1.2.8:3717/test
mongo-9551:SECONDARY> rs.slaveOk()
mongo-9551:SECONDARY> show dbs
admin  0.000GB
hello  0.000GB
local  0.000GB
test   0.000GB


如果要Mongo shell一直连接到Priamry节点,可通过如下方式连接: mongo --host 副本集名称/节点1,节点2 --authenticationDatabase admin -u system -p xxx
例如
mongo --host mg-100101/dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717,dds-uf69ba5cf6e123441.mongodb.rds.aliyuncs.com:3717  --authenticationDatabase admin -u system -p xxx


[backcolor=transparent]注意:MongoDB的主备节点在运行过程中是不固定的,实例重启、升级、节点故障等都有可能导致主备切换。在生产环境不要直连Primary,要正确连接复制集请参考: MongoDB如何实现读写分离
取消 提交回答
全部回答(0)
相关问答

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 968370浏览量 回答数 17

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 223003浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333874浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292287浏览量 回答数 110

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 277533浏览量 回答数 33

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256871浏览量 回答数 38

294

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 431621浏览量 回答数 294

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192338浏览量 回答数 21

249

回答

【史上最详细】阿里云ECS安装wordpress教程

爱映疯wp 2014-03-09 23:55:43 251184浏览量 回答数 249

13

回答

游戏云精彩帖汇总

nono20011908 2014-08-22 11:00:12 203640浏览量 回答数 13
+关注
云栖大讲堂
擅长前端领域,欢迎各位热爱前端的朋友加入我们( 钉钉群号:23351485)关注【前端那些事儿】云栖号,更多好文持续更新中!
3892
文章
1754
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载