我的问题是如何通过pymongo验证mongodb身份验证的用户名密码?.
我正在尝试使用PyMongo 3.2.2和包含用户和密码的URL连接到MongoDB实例,如MongoDB Docs中所述.不同的是我使用的密码包含'@'.
起初我只是试图连接而不逃避,像这样:
prefix ='mongodb://'
user ='user:passw_with _ @ _'
suffix ='@ 127.0.0.1:27001 /'
conn = pymongo.MongoClient(前缀+用户+后缀)
当然我得到以下错误:
InvalidURI: ':' or '@' characters in a username or password must be escaped according to RFC 2396.
Run Code Online (Sandbox Code Playgroud)
所以我尝试转义用户:使用urllib.quote()传递部分,如下所示:
prefix ='mongodb://'
user = urllib.quote('user:passw_with _ @ _')
suffix ='@ 127.0.0.1:27001 /'
conn = pymongo.MongoClient(前缀+用户+后缀)
但后来我得到了:
OperationFailure: Authentication failed.
Run Code Online (Sandbox Code Playgroud)
(重要的是说使用GUI MongoDB管理工具(Robomongo,如果这很重要)我可以使用(真实)地址和凭证连接到MongoDB.)
在上面的代码中打印用户变量生成一个'user:passw_with_%40_'字符串(即'@'变为'%40')并根据维基百科那是预期的转义.
我甚至试图逃逸单,双反斜杠(中@ user = 'user:passw_with_\\@_'和user = 'user:passw_with_\@_' …
MongoDB和Node.js的新手。我试图通过mongo给我的连接字符串连接到我的mongoDB服务器:
“ mongodb + srv:// david:password@cluster0-re3gq.mongodb.net/test?retryWrites = true”
在我的代码中,我像这样通过猫鼬调用连接(显然输入了密码):
const mongoose = require('mongoose');
const db = 'mongodb+srv://david:<password>@cluster0-re3gq.mongodb.net/test?retryWrites=true'
mongoose
.connect(db, {
useNewUrlParser: true,
useCreateIndex: true
})
.then(() => console.log('MongoDB connected...'))
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,出现以下错误
“ MongoError:错误的身份验证失败。”
关于这意味着什么的任何想法?谢谢!