Tag: pymongo

在docker集装箱中,连接到在另一个docker集装箱运行的mongodb auth由pymongo失败

我正在使用同一个泊坞窗图像运行两个名叫A和B的docker集装箱。 运行mongodb repl set服务器的A容器,我可以通过以下命令在容器和物理机器上访问它: mongo 172.17.0.2:27020 -u admin -p admin –authenticationDatabase admin 我也可以通过pymongo在容器和物理机器上使用它: hosts = "172.17.0.2:27018,172.17.0.2:27019,172.17.0.2:27020" extra_args = {"w": 1, "j": True} mongo_client = pymongo.MongoClient(hosts, replicaset="mongo_shard1", **extra_args) mongo_client.get_database("admin").authenticate( "admin", "admin", mechanism='SCRAM-SHA-1') 但是,在B容器上,我只能通过下面的命令访问一个容器的mongodb服务器: mongo 172.17.0.2:27020 -u admin -p admin –authenticationDatabase admin 如果我使用上面的pymongo,我得到下面的错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/pymongo/database.py", line […]

通过dockerauthentication错误pymongo

我试图连接到Docker容器内的一个数据库,然后在我的家用计算机的远程服务器内部。 docker集装箱端口27017绑定到服务器机器的端口27017 。 现在,我有一个Python3脚本,其目标是从我的家用计算机连接到这个数据库: from pymongo import MongoClient client=MongoClient('mongodb://myserverusername:myserverpass@server.dir.com:27017') database=client["my_collection"] cursor=database["my_collection"].find({}) print(next(cursor)) 如果我执行我的脚本停在line 4 ,它工作正常,但是当我释放line 5 ,我得到以下错误: Traceback (most recent call last): File "testDatabase.py", line 9, in <module> print(next(cursor)) File "[…]/lib/python3.5/site-packages/pymongo/cursor.py", line 1132, in next if len(self.__data) or self._refresh(): File "[…]/lib/python3.5/site-packages/pymongo/cursor.py", line 1055, in _refresh self.__collation)) File "[…]/lib/python3.5/site-packages/pymongo/cursor.py", line 892, in __send_message **kwargs) File "[…]/lib/python3.5/site-packages/pymongo/mongo_client.py", […]

无法从另一个容器连接到mongodb泊坞窗容器

我有以下简化的devise:一个mongodb容器和一个“python-client”docker集装箱,它与前者相连。 这是我简化docker-compose.yml文件: mongodb: build: "mongodb" dockerfile: "Dockerfile" hostname: "mongodb.local" ports: – "27017:27017" client: build: "client" dockerfile: "Dockerfile" hostname: "client.local" links: – "mongodb:mongodb" environment: – "MONGODB_URL=mongodb://admin:admin@mongodb:27017/admin" – "MONGODB_DB=historictraffic" 我能够使用mongodb://admin:admin@localhost:27017/admin连接string(请注意localhost )使用来自主机的pymongobuild立成功的连接: $ ipython from pymongo import MongoClient mongo = MongoClient('mongodb://admin:admin@localhost:27017/admin') db = mongo.test col = db.test col.insert_one({'x': 1}) # This works 但是我无法从客户端容器连接。 显然这个链接是正确的: / # cat /etc/hosts […]