远程权限认证解决办法 pymongo.errors.ServerSelectionTimeoutError: XX.:27017: [Errno 111] Connection refused

认证远程服务器的mongodb,一直报以下错误:

Traceback (most recent call last):
  File "run_cloudweb.py", line 109, in <module>
    operMongodb.ResourceThread.init_db(etc.config.MONGO_IP,int(etc.config.MONGO_PORT),etc.config.MONGO_DB,etc.config.MONGO_USER,etc.config.MONGO_PWD)
  File "/root/web/cloudweb_py3/operMongodb.py", line 281, in init_db
    db.authenticate(api_key,secret_key,mechanism='SCRAM-SHA-1')
  File "/usr/local/lib/python3.7/dist-packages/pymongo/database.py", line 1471, in authenticate
    connect=True)
  File "/usr/local/lib/python3.7/dist-packages/pymongo/mongo_client.py", line 751, in _cache_credentials
    writable_preferred_server_selector)
  File "/usr/local/lib/python3.7/dist-packages/pymongo/topology.py", line 231, in select_server
    address))
  File "/usr/local/lib/python3.7/dist-packages/pymongo/topology.py", line 189, in select_servers
    selector, server_timeout, address)
  File "/usr/local/lib/python3.7/dist-packages/pymongo/topology.py", line 205, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: XX.XX.XX.XX:27017: [Errno 111] Connection refused

经过各种检查发现问题如下:

1. 远程服务器/etc/mongodb.conf配置里bind_ip修改, 默认是127.0.0.1,改成 0.0.0.0。或者是加上开放的ip(例如:180.77.22.12,80.77.22.13)

bind_ip = 0.0.0.0

然后重启 service mongodb  restart

2. 验证的时候加上"SCRAM-SHA-1"

from pymongo import MongoClient

#ip是mongo所在的ip, port默认是27017
con = MongoClient(ip, port)

#admin是mongo里的账号密码认证库
db = con['admin']

#mongo3.0.3以上版本,加入了SCRAM-SHA-1校验方式
db.authenticate(user, passwd, mechanism='SCRAM-SHA-1')

到这里就OK了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值