认证和OpLoG?如何配置mongodb用户

时间:2017-03-20 13:19:20

标签: 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: {}, sort: { $natural: -1 }, limit: 1, singleBatch: true }

目前我有2个用户:

  1. mongoDbAdmin(mongodb管理员用户)
  2. myAppUsr(我的客户端应用程序中使用的用户)
  3. 我试图添加一个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

0 个答案:

没有答案