问题
I have a MongoDB Atlas cluster within which I am trying to simply copy a database within the same instance. Unfortunately, every time I try to run db.copyDatabase() or copydb admin command, I get the following error:
not authorized on admin to execute command
Which is very strange, because I just have one user, and it has access to everything, at least as far as I can tell on atlas:
I did some search in stackoverflow, but it looked like most of the answers pertain to mongod instances running locally, and not ones running in atlas... Did I setup the user wrong?
回答1:
I ended up asking this question to MongoDB University discussion board. In case anyone comes across this, this is apparently because I am using a free cluster.
回答2:
I had the same issue when I was trying to connect to a cluster with Node.js version 3.0 or later and using the link below:
mongodb+srv://username:password@cluster0-eoowo.mongodb.net/test?retryWrites=true
By selecting version 2.2.12 or later and using the link provided, everything went well
mongodb://username:password@cluster0-shard-00-00-eoowo.mongodb.net:27017,cluster0-shard-00-01-eoowo.mongodb.net:27017,cluster0-shard-00-02-eoowo.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true
回答3:
This drove me insane... Turns out the standard link provided by MongoDB was trying to name my default database "admin". Change link from
mongodb+srv://username:password@portfoliosite-ezeot.mongodb.net/admin?retryWrites=true&w=majority
to
mongodb+srv://username:password@portfoliosite-ezeot.mongodb.net/test?retryWrites=true&w=majority
You can put any word in for test just not admin. Hope this helps!
回答4:
just use this version and then copy its link and replace the username and password from your mongodb atlas that have the permision to read and write and it will connect i was also having the same problem spent a lot of time to solve this then i tries 2.2.12 version and it workerd.
回答5:
I had faced a similar obstacle and spent hours, the problem was with the connection string provided by mongodb atlas which is: mongodb+srv://username:password@clusterName-jynkd.mongodb.net/test?retryWrites=true
I used a different connection string and worked perfectly. This is it:
mongodb://username:password@clusterName+port/yourdb?retryWrites=true&ssl=true&authSource=admin
.
Make sure the clustername + port are like this:
clusterName-shard-00-00-jynkd.mongodb.net:27017
回答6:
this error is because you are trying create the colecction above admin, in atlas this isn't possible because securty.
in this case you need to use the word key use [collection_name]
this is the link for this answer.
it is in spanish.
https://victorroblesweb.es/2016/12/24/crear-una-base-datos-mongodb/
回答7:
In case you have been using mongoose, I solved a similar error updating mongoose to latest version (based on this post).
来源:https://stackoverflow.com/questions/49101567/mongodb-atlas-not-authorized-on-admin-to-execute-command