在 mongodb 上运行 ycsb 时出现未经授权的错误

问题描述

我正在尝试在我的 mongodb 实例上运行 ycsb(在云中运行)。在 mongodb 方面,我创建了两个具有两个非常广泛的权限范围的用户

> show users
{
    "_id" : "admin.admin","user" : "admin","db" : "admin","roles" : [
        {
            "role" : "clusteradmin","db" : "admin"
        },{
            "role" : "dbAdminAnyDatabase",{
            "role" : "userAdminAnyDatabase","db" : "admin"
        }
    ],"userId" : UUID("99509f21-0ca3-4e3d-b585-dd7455128fa2"),"mechanisms" : [
        "SCRAM-SHA-256"
    ]
}
{
    "_id" : "admin.ycsb","user" : "ycsb","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\",$db: \"ycsb\",lsid: { id: UUID(\"f5d018fb-f89b-4b9f-ae65-6edf04b87536\") } }","code" : 13,"codeName" : "Unauthorized","$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1626190349,"signature" : { "hash" : { "$binary" : "Qsn/dflLo5Ti7hFN4x7UkAJglr4=","$type" : "00" },"keyId" : { "$numberLong" : "6983987685132075011" } } } }

有趣的是它向用户 ycsb 抱怨,但是我在所有可能的地方都提供了 admin。如果我将 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"

$ 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"

失败,错误与上述完全相同。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)