Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 身份验证和OpLoG?如何配置mongodb用户_Python_Mongodb_Pymongo_Mongoengine - Fatal编程技术网

Python 身份验证和OpLoG?如何配置mongodb用户

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

我正在尝试使用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个用户:

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