同じインスタンス内でデータベースを単純にコピーしようとしているMongoDB Atlasクラスターがあります。残念ながら、db.copyDatabase()またはcopydb adminコマンドを実行しようとするたびに、次のエラーが発生します。
not authorized on admin to execute command
これは非常に奇妙なことです。なぜなら、私には1人のユーザーしかいないため、少なくともアトラスでわかる限り、すべてにアクセスできるからです。
私はstackoverflowでいくつかの検索を行いましたが、ほとんどの回答はローカルで実行されているmongodインスタンスに関するものであり、アトラスで実行されているものではないようです...ユーザーを間違って設定しましたか?
結局、この質問をMongoDB大学のディスカッションボードに尋ねました。誰かがこれに遭遇した場合、これは明らかに私が無料のクラスターを使用しているためです。
このエラーのもう1つの原因は、不正な操作を開始したユーザーとは別のユーザーとしてログインしていることです。_db.killOp
_を使用するには、操作を開始したのと同じユーザーとしてmongoシェルにログインする必要があります。
Atlasでは、データベースユーザーは
db.killOp()
コマンドを使用して自身の操作を強制終了できます。 atlasAdmin特権を持つアカウントは、そのアカウントによって開始されなかったクラスター上の操作を強制終了できないことは正しいです。アプリケーションが問題のある操作を開始するために使用したユーザーを使って、mongoシェルで認証すると、db.killOp()を使用してその操作を強制終了できるはずです。
(ソースはアトラスサポートチケットです)
Mongooseを使用していた場合、mongooseを最新バージョンに更新する同様のエラーを解決しました(これに基づいて post を使用)。
このエラーは、管理者より上のコレクションを作成しようとしているためです。アトラスでは、セキュリティのためにこれは不可能です。
この場合、Wordキーを使用する必要があります。[collection_name]
これはこの回答のリンクです。
スペイン語です。
https://victorroblesweb.es/2016/12/24/crear-una-base-datos-mongodb/