Несанкционированная ошибка при запуске ycsb на mongodb

Я пытаюсь запустить ycsb на моем экземпляре mongodb (работает в облаке). На стороне mongodb я создал двух пользователей с двумя очень широкими полномочиями:

> show users
{
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "roles" : [
        {
            "role" : "clusterAdmin",
            "db" : "admin"
        },
        {
            "role" : "dbAdminAnyDatabase",
            "db" : "admin"
        },
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ],
    "userId" : UUID("99509f21-0ca3-4e3d-b585-dd7455128fa2"),
    "mechanisms" : [
        "SCRAM-SHA-256"
    ]
}
{
    "_id" : "admin.ycsb",
    "user" : "ycsb",
    "db" : "admin",
    "roles" : [
        {
            "role" : "clusterAdmin",
            "db" : "admin"
        },
        {
            "role" : "dbAdminAnyDatabase",
            "db" : "admin"
        },
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ],
    "userId" : UUID("96b184ee-759c-4de8-82f5-93ff62b59f23"),
    "mechanisms" : [
        "SCRAM-SHA-256"
    ]
}

Затем я просто пытаюсь запустить следующую команду для загрузки рабочей нагрузки:

$ bin/ycsb.sh load mongodb -s -P workloads/workloada -p recordcount=500000 -threads 16 -p mongodb.url="mongodb://admin:<password>@<ip>:27017/admin?w=1" -p mongodb.auth="true"

В этом случае появляется ошибка:

com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'not authorized on ycsb to execute command { insert: "usertable", ordered: true, writeConcern: { w: 1 }, $db: "ycsb", $clusterTime: { clusterTime: Timestamp(1626190349, 1), signature: { hash: BinData(0, 42C9FF75F94BA394E2EE114DE31ED49002602D1E), keyId: 6983987685132075011 } }, lsid: { id: UUID("f5d018fb-f89b-4b9f-ae65-6edf04b87536") } }' on server <ip>:27017. The full response is { "operationTime" : { "$timestamp" : { "t" : 1626190349, "i" : 1 } }, "ok" : 0.0, "errmsg" : "not authorized on ycsb to execute command { insert: \"usertable\", ordered: true, writeConcern: { w: 1 }, $db: \"ycsb\", $clusterTime: { clusterTime: Timestamp(1626190349, 1), signature: { hash: BinData(0, 42C9FF75F94BA394E2EE114DE31ED49002602D1E), keyId: 6983987685132075011 } }, lsid: { id: UUID(\"f5d018fb-f89b-4b9f-ae65-6edf04b87536\") } }", "code" : 13, "codeName" : "Unauthorized", "$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1626190349, "i" : 1 } }, "signature" : { "hash" : { "$binary" : "Qsn/dflLo5Ti7hFN4x7UkAJgLR4=", "$type" : "00" }, "keyId" : { "$numberLong" : "6983987685132075011" } } } }

Интересно, что он жалуется на пользователя ycsb, однако я предоставил администратора во всех возможных местах. Если я изменю URL-адрес на "mongodb://admin:<password>@<ip>:27017/aaaa?w=1", я получу сообщение об ошибке, относящееся к пользователю aaaa, но это никогда не сработает для администратора. По этой причине я создал нового пользователя ycsb, но команды:

$ bin/ycsb.sh load mongodb -s -P workloads/workloada -p recordcount=500000 -threads 16 -p mongodb.url="mongodb://admin:<password>@<ip>:27017/ycsb?w=1" -p mongodb.auth="true"

or

$ bin/ycsb.sh load mongodb -s -P workloads/workloada -p recordcount=500000 -threads 16 -p mongodb.url="mongodb://ycsb:<password>@<ip>:27017/ycsb?w=1" -p mongodb.auth="true"

завершиться с той же ошибкой, что и выше.


person Marian Lobur    schedule 13.07.2021    source источник
comment
См. stackoverflow.com/questions/63754742/   -  person Wernfried Domscheit    schedule 13.07.2021