我试图使用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: {}, sort: { $natural: -1 }, limit: 1, singleBatch: true }
目前我有2个用户:
我试图添加一个Oplogger用户,但它仍然无法正常工作。
db.createUser({user:" oplogger",pwd:" PasswordForOplogger",角色: [{role:" read",db:" local"}]})
我还试图向我的客户端用户提供oplog权限:
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 NETWORK [thread1]连接从192.168.1.xx接受:60264#1(1 连接现在打开)
I NETWORK [conn1]从192.168.1.xx:60264接收客户端元数据 conn1:{driver:{name:" PyMongo",version:" 3.4.0" ,os:{type: " Windows",名称:" Windows 10",架构:" AMD64",版本: " 10.0.14393-SP0" },平台:" CPython 3.5.3.final.0" }
I NETWORK [thread1]连接从192.168.1.xx接受:60266#2(2 连接现已开启)
I NETWORK [conn2]从192.168.1.xx:60266收到客户端元数据 conn2:{driver:{name:" PyMongo",version:" 3.4.0" ,os:{type: " Windows",名称:" Windows 10",架构:" AMD64",版本: " 10.0.14393-SP0" },平台:" CPython 3.5.3.final.0" }
I ACCESS [conn2]未经授权:未在本地授权执行 命令{find:" oplog。$ main",filter:{},sort:{$ natural:-1}, 限制:1,singleBatch:true}
I ACCESS [conn2]成功通过身份验证为myappUsr myapp_dev