MongoDB: はじめに
MongoDBの始め方
MongoDBサーバーへの接続
Mongo CLIを使用してMongoDBインスタンスに接続するには、次のコマンドを使用します。
mongo --quiet mongodb://<user>:<password>@<XXXXXX>.stackhero-network.com:27017/<database>?tls=true
例えば、adminユーザーとしてadminデータベースに接続したい場合、次のように実行します。
mongo --quiet mongodb://admin:<password>@<XXXXXX>.stackhero-network.com:27017/admin?tls=true
Mongo CLIがシステムにインストールされていない場合は、公式MongoDBドキュメントからダウンロードできます。あるいは、Dockerがシステムにある場合、次のコマンドが役立つかもしれません。
docker run -it mongo /bin/bash
MongoDBでのデータベースとユーザーの作成
セキュリティを向上させ、より良い組織化を確保するために、各データベースに対してユニークなユーザーを作成することをお勧めします。以下は新しいユーザーを作成するためのスクリプトの例です。
db.getSiblingDB("myDatabase")
.createUser({
user: "myUser",
pwd: "myPassword",
roles: [ { role: "readWrite", db: "myDatabase" } ],
passwordDigestor: "server"
});
上記のスクリプトは、myUserという名前のユーザーをmyPasswordというパスワードで作成し、myDatabaseデータベースに対する読み書き権限を付与します。
警告 ユーザー作成操作を行う際は、
adminユーザーとして接続していることを確認してください。
MongoDBでのユーザーの削除
例えば、myUserをmyDatabaseデータベースから削除するには、次のコマンドを実行します。
db.getSiblingDB("myDatabase").dropUser("myUser");
MongoDBデータのバックアップ
MongoDBデータをバックアップするには、次のコマンドを使用します。
mongodump --uri "mongodb://<user>:<password>@<XXXXXX>.stackhero-network.com:27017/<database>?tls=true"
次のようなエラーが発生した場合:
authentication failed for admin on <database> from client <ip>; UserNotFound: Could not find user admin@<database>
これは、指定されたデータベースに対してadminユーザーが登録されていないためかもしれません。--authenticationDatabase=adminオプションを追加することで問題が解決するかもしれません。
mongodump --authenticationDatabase=admin --uri "mongodb://<user>:<password>@<XXXXXX>.stackhero-network.com:27017/<database>?tls=true"
圧縮バックアップを行うには、--gzipオプションを含めることができます。
mongodump --gzip --uri "mongodb://<user>:<password>@<XXXXXX>.stackhero-network.com:27017/<database>?tls=true"
トラブルシューティング
Use of SCRAM-SHA-256 requires undigested passwordsエラーの解決
このエラーは、Admin Mongo UIを介してユーザーを作成しようとしたときに発生することがあります。これを避けるために、MongoDBでのデータベースとユーザーの作成セクションで提供されているMongoクエリを使用してください。
注意: Admin Mongo UIは直接クエリの実行をサポートしていません。代わりに、Mongo CLI(詳細はこちら)やRobo 3TなどのGUIツールを使用することを検討してください(設定ガイドを見る)。