Mongoをスーパーユーザーとして入力したり、ユーザーをリセットしたりするにはどうすればよいですか?


29

私は許可をいじっていたので、Mongoデータベースから締め出されました。データベースへのアクセスを明示的に追加することでこれを行ったと確信していますが、代わりにデータベースへのアクセス許可のみを上書きしました。したがって、私はMongoデータベースから事実上ロックアウトされており、私が読んだすべてが、ユーザー追加権限を持っている場合にスーパーユーザーを作成する方法を教えてくれます。現時点では、その特権を持つユーザーはいないと思います。すべてのアクセスとしてデータベースを入力する方法はありますか?私はサーバーを所有しており、rootアクセスを持っています。

回答:


38

ロックアウトしている場合は、次を実行する必要があります。

  1. MongoDBインスタンスを停止します
  2. MongoDB構成から--authまたは--keyfileオプションを削除して、認証を無効にします
  3. 認証なしでインスタンスを開始する
  4. 必要に応じてユーザーを編集します
  5. 認証を有効にしてインスタンスを再起動します

authを削除しても、実際には十分ではありませんでした、ありがとう!
アンドレイ

14

最初にスーパーユーザーを追加せずにユーザーを作成したときに、同様の問題が発生しました。次の手順は、問題の解決に役立ちました。

  1. sudosudo vi mongodb.conf)を使用してMongoDB構成ファイルを開きます。
    ファイルは/etc/フォルダーにあります。
  2. コメント"auth = true"
  3. MongoDBサービスを停止します(sudo service mongod stop
  4. MongoDBサービスを開始します(sudo service mongod start
  5. 次に、以下のコマンドを使用して「root」スーパーユーザーを作成します。

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});

    参照用https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. 戻ってコメントを外し"auth=true"ます。mongodbサービスを停止して開始/再起動します。


感謝できません。プロジェクトを開発サーバーにアップロードしたときに、これを把握しようとして立ち往生しています。どうもありがとうございます!:)
Woppi

同上。これに関するサーバーのエラーメッセージは非常に役に立ちません。ありがとうございました!
トム

7

レプリカセットを使用する場合keyfile

内部認証を使用したレプリカセットのメンバー間のセキュリティ

キーファイルはレプリケーションの認証に使用されます。

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

次のコマンドを使用して、mongodの管理者としてログインできます。

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

あとで、管理ユーザーを作成または変更できます。

内部役割

__systemMongoDBは、レプリカセットメンバーやmongosインスタンスなどのクラスターメンバーを表すユーザーオブジェクトにこのロールを割り当てます。ロールは、データベースのオブジェクトに対してアクションを実行する権利を所有者に付与します。

例外的な状況を除き、アプリケーションまたは人間の管理者を表すユーザーオブジェクトにこのロールを割り当てないでください。


この情報はどこで見つけましたか?
8

2

この質問への回答を確認してください、彼らは助けるかもしれません

https://stackoverflow.com/questions/20117104/mongodb-root-user

基本的にサーバーにアクセスできる場合は、Adminデータベースにアクセスできる場合があります。

このページにはもっとありますhttp://docs.mongodb.org/v2.4/reference/user-privileges/

2.6バージョンでは、これが完全に機能する方法が変わることに注意してください。2.6では、http://docs.mongodb.org/manual/security/でさらに時間を費やす必要があります。


1
投稿で述べたように、それは私が見つけた唯一の情報です。それを行う権限がありません
トニー14

0

Mongoを停止し、管理ファイルを削除してから、Mongoを起動する必要があります

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
これは、管理ユーザーデータベースを破壊し、「localHostExcetption」を介したアクセスを許可するため、問題が発生した場合にユーザーを管理するのに適した方法ではありません。
タイトルなしby DaveH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.