我正在尝试编写一个MongoDB脚本,作为根据GDPR自动删除客户数据的一部分(当前流程是手动的),但我在从脚本进行身份验证时遇到问题。身份验证可以从命令行完美运行,但不能从脚本运行。
我不确定我应该使用哪种机制,但由于只有两种机制不需要外部文件(我不在命令行中使用),我想我会尝试两种机制。
从命令行运行时,这是我使用的命令:
$ mongo -u [adminusr] -p '[adminpwd]' --authenticationDatabase admin
这个脚本:
var host = '127.0.0.1';
var port = '27017';
var user = 'admin';
var pwd = 'secrets';
var authDB = 'admin';
try {
var conn = new Mongo('mongodb://' + host + ':' + port + '/' + authDB);
conn.auth({
user: user,
pwd: pwd,
mechanism: 'SCRAM-SHA-1',
digest: false
});
// deletion commands...
} catch (e) {
print(e);
}
给出了这个错误:
$ mongo erasure.js
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Error: Authentication failed.
将auth
部分更改为:
conn.auth({
user: user,
pwd: pwd,
mechanism: 'MONGODB-CR',
db: authDB,
digest: false
});
给了我这个错误:
$ mongo erasure.js
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.10
Error: auth failed
writing MongoDB scripts和authentication的官方文档在如何执行此操作方面也非常缺乏。
如何让auth工作?
感谢。