Python 身份验证和OpLoG?如何配置mongodb用户
我正在尝试使用mongodb数据库的Oplog。 我的软件是Python,使用Mongoengine和Pymongo 如果我不使用--auth选项,它会工作得很好,但是我想让它与身份验证一起工作 我发现以下错误:Python 身份验证和OpLoG?如何配置mongodb用户,python,mongodb,pymongo,mongoengine,Python,Mongodb,Pymongo,Mongoengine,我正在尝试使用mongodb数据库的Oplog。 我的软件是Python,使用Mongoengine和Pymongo 如果我不使用--auth选项,它会工作得很好,但是我想让它与身份验证一起工作 我发现以下错误: 2017-03-20T13:51:36.721+0100 I ACCESS [conn13] Unauthorized: not authorized on local to execute command { find: "oplog.$main", filter: {}, so
2017-03-20T13:51:36.721+0100 I ACCESS [conn13] Unauthorized: not authorized on local to execute command { find: "oplog.$main", filter: {}, sort: { $natural: -1 }, limit: 1, singleBatch: true }
目前,我有2个用户:
db.createUser(
{
user: "myAppUsr",
pwd: "password",
roles: [ { role: "readWrite", db: "myapp_dev" },
{ role: "readWrite", db: "myapp" },
{ role: "read", db: "local" }]
}
)
我使用以下命令启动mongodb:
mongod——master——auth
我应该向我的用户提供什么样的访问权限以允许他阅读OpLog
我使用mongoengine的连接:
mongo_client = connect(
db="myapp_dev",
username="myAppUsr",
password="password",
host="my.server.ip.adress",
port=27017,
authentication_source="myapp_dev",
socketTimeoutMS=5000,
connectTimeoutMS=5000,
serverSelectionTimeoutMS=5000)
身份验证日志:
I从192.168.1.xx接受网络[thread1]连接:60264#1(1
连接(现在打开)
I网络[conn1]从192.168.1.xx:60264接收到客户端元数据
conn1:{驱动程序:{名称:“PyMongo”,版本:“3.4.0”},操作系统:{类型:
“Windows”,名称:“Windows 10”,体系结构:“AMD64”,版本:
“10.0.14393-SP0”},平台:“CPython 3.5.3.final.0”}
I从192.168.1.xx接受网络[thread1]连接:60266#2(2
连接(现在打开)
I网络[conn2]从192.168.1.xx:60266接收到客户端元数据
conn2:{驱动程序:{名称:“PyMongo”,版本:“3.4.0”},操作系统:{类型:
“Windows”,名称:“Windows 10”,体系结构:“AMD64”,版本:
“10.0.14393-SP0”},平台:“CPython 3.5.3.final.0”}
I访问[conn2]未经授权:未经授权在本地执行
命令{find:“oplog.$main”,过滤器:{},排序:{$natural:-1},
限制:1,单批处理:true}
我访问[conn2]成功通过身份验证为上的主体myappUsr
myapp_dev
您的连接Uri是什么样子的?在进行任何调用之前,您必须使用用户名、密码和身份验证数据库。我不使用Uri样式的连接,我使用mongoengine连接方法。我用我的连接方法更新了我的问题。你可以尝试添加
身份验证\u source
并将其设置为创建你使用的用户名的数据库名吗?我刚刚尝试过,使用我的数据库和管理员,同样的错误。你使用的是哪个mongo服务器版本?您能否尝试使用密码和数据库作为本地进行身份验证\u source
的myAppUsr
?您的连接Uri是什么样子的?在进行任何调用之前,您必须使用用户名、密码和身份验证数据库。我不使用Uri样式的连接,我使用mongoengine连接方法。我用我的连接方法更新了我的问题。你可以尝试添加身份验证\u source
并将其设置为创建你使用的用户名的数据库名吗?我刚刚尝试过,使用我的数据库和管理员,同样的错误。你使用的是哪个mongo服务器版本?您可以尝试使用密码和数据库作为本地
进行身份验证\u源
的myAppUsr
吗?