私は許可をいじって、Mongoデータベースからロックアウトされました。データベースへのアクセスを明示的に追加することでこれを行ったと確信していますが、データベースへのアクセス許可のみを上書きしました。そのため、Mongoデータベースから事実上ロックアウトされ、ユーザーの追加特権がある場合、読み取るすべての情報からスーパーユーザーを作成する方法がわかります。今のところ、その特権を持つユーザーはいないと思います。すべてのアクセスとしてデータベースに入る方法はありますか?私はサーバーを所有し、rootアクセス権を持っています。
自分をロックアウトした場合は、次のことを行う必要があります。
最初にスーパーユーザーを追加せずにユーザーを作成したときも、同様の問題がありました。次の手順は、問題の解決に役立ちました。
Sudo
(Sudo vi mongodb.conf
)を使用してMongoDB構成ファイルを開きます。/etc/
フォルダにあります。"auth = true"
。Sudo service mongod stop
)Sudo service mongod start
)次に、以下のコマンドを使用して「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
戻って"auth=true"
のコメントを外します。 mongodbサービスを停止して開始/再起動します。
keyfile
付きのレプリカセット を使用する場合
内部認証を使用したレプリカセットのメンバー間のセキュリティ
キーファイルはレプリケーションの認証に使用されます。
security:
keyFile: <path-to-keyfile>
replication:
replSetName: <replicaSetName>
次のコマンドを使用して、mongodの管理者としてログインできます。
mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local
あとがきで、管理ユーザーを作成または変更できます。
内部の役割
__system
MongoDBは、レプリカセットメンバーやmongosインスタンスなど、クラスターメンバーを表すユーザーオブジェクトにこのロールを割り当てます。このロールは、その所有者にデータベース内のオブジェクトに対して任意のアクションを実行する資格を与えます。例外的な状況を除いて、アプリケーションまたは人間の管理者を表すユーザーオブジェクトにこのロールを割り当てないでください。
この質問への回答を確認してください。
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/ でより多くの時間を費やす必要があります
Mongoを停止し、adminファイルを削除してから、Mongoを起動する必要があります
Sudo service mongod stop
mv /data/admin.* .
Sudo service mongod start