来自安全Mongo数据库的Mongodump

时间:2017-03-24 17:46:24

标签: mongodb ssl

为了让我连接到这个[secure] Mongo实例,我必须运行以下命令:

mongo --ssl --host sampleHostname --sslPEMKeyFile /path/to/user.pem --sslCAFile /path/to/mongoca.cer --authenticationDatabase '$external' --authenticationMechanism=MONGODB-X509

我正在尝试执行mongodump命令来获取数据,但我一直遇到以下错误:

尝试1

mongodump -d mydb

Failed: error connecting to db server: no reachable servers

尝试2 Can't create backup mongodump with --db. Authentication failed

mongodump -d mydb --authenticationDatabse '$external'

Failed: error connecting to db server: no reachable servers

尝试3 使用与我连接方式相同的命令。

mongodump -d mydb --ssl --host sampleHostname --sslPEMKeyFile /path/to/user.pem --sslCAFile /path/to/mongoca.cer --authenticationDatabase '$external' --authenticationMechanism=MONGODB-X509

Failed: error getting collections for database 'mydb': error running 'listCollections'. Database: 'mydb' Err: not authorized on 'mydb' to execute command {listCollections: 1, cursor: {} }

我用sudo尝试了相同的命令,但它仍然返回相同的错误。

尝试4 Minimum permission for using mongodump (to dump a specific db)

mongodump -d mydb --ssl --host sampleHostname --sslPEMKeyFile /path/to/user.pem --sslCAFile /path/to/mongoca.cer --authenticationDatabase '$external' --authenticationMechanism=MONGODB-X509 --excludeCollection=system.indexes

Failed: error getting collections for database 'mydb': error running 'listCollections'. Database: 'mydb' Err: not authorized on 'mydb' to execute command {listCollections: 1, cursor: {} }

我陷入困境,我最终将要运行mongorestore但我不想在没有确保我能够先备份的情况下运行它。我想mongodump的解决方案可以解决mongorestore(如果有的话)可能遇到的任何问题。

1 个答案:

答案 0 :(得分:0)

由于这个blog post我找到了解决方案,看起来你必须在使用509和$ external时用CN设置-u值。

mongodump --ssl --sslPEMKeyFile user.pem --sslCAFile cap.pem --sslAllowInvalidHostnames --authenticationMechanism=MONGODB-X509 --authenticationDatabase '$external'  --host "rsTmpCloudManager/10.100.15.118:27017,10.100.16.237:27017,10.100.17.107:27017" -d testJoce -u "CN=???,OU=???,O=???,L=???,ST=???,C=??"