MongoError: listCollections failed
MongoError: listCollections failed
我已经建立了一个 mongo 数据库,它与身份验证一起使用。
我正在尝试使用 mongodb native driver 复制数据库。
问题是我的命令被拒绝为:
MongoError: listCollections failed: { ok: 0.0, errmsg: "not authorized on SESSION to execute command { listCollections: 1, filter: { $or: [ { type: "collection" }, { type: { $exists: false } } ] }, cu...", code: 13, codeName: "Unauthorized" }
这是我 运行 我的数据库的方式:
/usr/bin/mongod --quiet
--setParameter authenticationMechanisms=SCRAM-SHA-1
--auth
--port 27017
--dbpath /database
这是我用来连接的用户
db.createUser({
"user": "USER",
"pwd": "PASS",
"roles": [ "root" ]
});
我也试过使用:
db.createUser({
"user": "USER",
"pwd": "PASS",
"roles": [ { "role": "root", "db": "admin" } ]
});
这是我的连接方式(连接成功):
const url = "mongodb://USER:PASS@172.42.0.2:27017/SESSION?authSource=admin";
MongoClient.connect(url, ...
这是我请求副本的方式:
const mongoCommand = {
copydb: 1,
fromhost: "172.42.0.2",
fromdb: "SESSION",
todb: "SESSION_COPY",
};
// Perform the copy
this.db.admin().command(mongoCommand, function (err, data) {
我正在使用:
Mongodb (database) v3.4.7
Mongodb (node package) v2.2.31
谢谢:)
一些帮助我度过难关的帖子:
mongodb-not-authorized-for-query-admin-system-users
好的,首先,这是 copydb command mongodb documentation。
我们可以看到,在使用 fromhost
的情况下,您需要指定 username
、nouce
和 key
.
解决方案
如果要在同一主机上复制数据库:不要使用 fromhost
.
示例:
const mongoCommand = {
copydb: 1,
fromdb: "SESSION",
todb: "SESSION_SAVE",
};
如果要使用不同主机复制数据库:使用 username
、nonce
和 key
here is how you create them.
我已经建立了一个 mongo 数据库,它与身份验证一起使用。
我正在尝试使用 mongodb native driver 复制数据库。
问题是我的命令被拒绝为:
MongoError: listCollections failed: { ok: 0.0, errmsg: "not authorized on SESSION to execute command { listCollections: 1, filter: { $or: [ { type: "collection" }, { type: { $exists: false } } ] }, cu...", code: 13, codeName: "Unauthorized" }
这是我 运行 我的数据库的方式:
/usr/bin/mongod --quiet
--setParameter authenticationMechanisms=SCRAM-SHA-1
--auth
--port 27017
--dbpath /database
这是我用来连接的用户
db.createUser({
"user": "USER",
"pwd": "PASS",
"roles": [ "root" ]
});
我也试过使用:
db.createUser({
"user": "USER",
"pwd": "PASS",
"roles": [ { "role": "root", "db": "admin" } ]
});
这是我的连接方式(连接成功):
const url = "mongodb://USER:PASS@172.42.0.2:27017/SESSION?authSource=admin";
MongoClient.connect(url, ...
这是我请求副本的方式:
const mongoCommand = {
copydb: 1,
fromhost: "172.42.0.2",
fromdb: "SESSION",
todb: "SESSION_COPY",
};
// Perform the copy
this.db.admin().command(mongoCommand, function (err, data) {
我正在使用:
Mongodb (database) v3.4.7
Mongodb (node package) v2.2.31
谢谢:)
一些帮助我度过难关的帖子:
mongodb-not-authorized-for-query-admin-system-users
好的,首先,这是 copydb command mongodb documentation。
我们可以看到,在使用 fromhost
的情况下,您需要指定 username
、nouce
和 key
.
解决方案
如果要在同一主机上复制数据库:不要使用 fromhost
.
示例:
const mongoCommand = {
copydb: 1,
fromdb: "SESSION",
todb: "SESSION_SAVE",
};
如果要使用不同主机复制数据库:使用 username
、nonce
和 key
here is how you create them.