遠程權限認證解決辦法 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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章