Joey
Joey

Reputation: 1876

Mongodump from secure Mongo database

In order for me to connect to this [secure] Mongo instance I have to run the following command:

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

I am trying to do a mongodump command to get the data but I keep running into the following errors:

Attempt 1

mongodump -d mydb

Failed: error connecting to db server: no reachable servers

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

mongodump -d mydb --authenticationDatabse '$external'

Failed: error connecting to db server: no reachable servers

Attempt 3 Using the same command as how I connect.

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: {} }

I have tried the same command with sudo but it still returns the same error.

Attempt 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: {} }

I am stuck and I am eventually going to run mongorestore but I do not want to run this without making sure I am able to backup first. I imagine the solution for mongodump will resolve any possible issues I may have with mongorestore (if any).

Upvotes: 3

Views: 2415

Answers (1)

jocelyn
jocelyn

Reputation: 898

I found the solution thanks to this blog post , looks you have to set the -u value with the CN when using 509 and $external.

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=??"

Upvotes: 1

Related Questions