私のMongoDBインスタンスにユーザー名とパスワードによる認証を設定したいのです。そうすれば、どんなリモートアクセスでもユーザー名とパスワードが要求されます。私はMongoDBサイトからチュートリアルを試してみて、以下のようにしました:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
その後、私は出て再びモンゴを走りました。それにアクセスするためにパスワードは必要ありません。データベースにリモート接続しても、ユーザー名とパスワードの入力を求められません。
_ update _ これが私が使ったソリューションです
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ Sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
ユーザー名とパスワードはmongodump
とmongoexport
でも同じように機能します。
ユーザーを設定した後、--auth
オプションでmongod
を起動する必要があります。
MongoDBサイトから:
セキュリティを有効にするには、
--auth
オプションを指定してデータベース(mongodプロセス)を実行します。--auth
でサーバーを起動する前にadmin dbにユーザーを追加するか、localhostインターフェースから最初のユーザーを追加する必要があります。
まず、mongod設定ファイルの#auth=true
で始まる行のコメントを外します(デフォルトパスは/etc/mongo.conf
)。これでmongodbの認証が有効になります。
その後、mongodbを再起動します。Sudo service mongod restart
すごく複雑でわかりにくい答えがたくさんあります。
これは v3.4 以降です。
1)アクセス制御なしでMongoDBを起動します。
mongod --dbpath /data/db
2)インスタンスに接続します。
mongo
3)ユーザーを作成します。
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4)MongoDBインスタンスを停止し、アクセス制御を使用して再開します。
mongod --auth --dbpath /data/db
5)接続してユーザーとして認証します。
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
とても簡単です。私は以下をダムするよ https://docs.mongodb.com/manual/tutorial/enable-authentication/
役割が実際に何をしているのかもっと知りたい場合は、こちらをご覧ください: https://docs.mongodb.com/manual/reference/built-in-roles/
1)アクセス制御なしでMongoDBを起動します。
mongod --dbpath /data/db
2)インスタンスに接続します。
mongo
3)ユーザー管理者を作成します。 以下はadmin
認証データベースにユーザー管理者を作成します。ユーザーはsome_db
データベースに対するdbOwner
であり、admin
データベースに対するものではありません。これは覚えておくことが重要です。
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
あるいは、どのデータベースに対してもadminという管理者を作成したい場合は、
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4)MongoDBインスタンスを停止し、アクセス制御を使用して再開します。
mongod --auth --dbpath /data/db
5)some_db
認証データベースではなくadmin
認証データベースに接続し、ユーザー管理者として認証します。 ユーザー管理者はadmin
認証データベースに作成されました。ユーザーはsome_db
認証データベースには存在しません。
use admin
db.auth("myDbOwner", "abc123")
あなたは現在some_db
データベースに対するdbOwner
として認証されています。そのため、some_db
データベースに直接アクセスして読み書きしたい場合は、変更することができます。
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
役割の詳細: https://docs.mongodb.com/manual/reference/built-in-roles/
あなたがユーザ管理者ではなく、単に普通のユーザである追加のユーザを作りたいのであれば、以下を続けてください。
6)一般ユーザーを作成します。 このユーザーは、下のsome_db
認証データベースに作成されます。
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7)mongo Shellを終了し、再接続してユーザーとして認証します。
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
この回答はMongo 3.2.1用です 参考
ターミナル1:
$ mongod --auth
ターミナル2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
ロールなしで追加したい場合(オプション):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
認証済みかどうかを確認するには
db.auth("admin_name", "1234")
それはあなたを与えるはずです:
1
それ以外の場合
Error: Authentication failed.
0
これはユーザーを追加するためのJavaScriptコードです。
mongod
を--auth = true
で開始します
Mongo Shellから管理データベースにアクセスし、javascriptファイルを渡します。
mongo admin "Filename.js"
"Filename.js"
// Adding admin user
db.addUser("admin_username", " admin_password");
// Authenticate admin user
db.auth("admin_username ", " admin_password ");
// use database code from Java script
db = db.getSiblingDB("newDatabase");
// Adding newDatabase database user
db.addUser("database_username ", " database_ password ");
これでユーザー追加が完了しました。mongoShellからデータベースへのアクセスを確認できます
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
モンゴ設定ファイルを編集します。
Sudo nano /etc/mongod.conf
次の行を追加してください。
security.authorization : enabled
サービスを再開する
Sudo service mongod restart
よろしく
まずターミナルを使ってmongoDBを実行します。
mongod
mongo Shellを実行して、次のコマンドを使用します。
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
アクセス制御を使用してMongoDBインスタンスを再起動します。
mongod --auth
今すぐコマンドラインから自分自身を使用して認証します
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
から読みました
https://docs.mongodb.com/manual/tutorial/enable-authentication/ /
データベースアクセスを保護するための特定のデータベース用のパスワードを使用したユーザー作成:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
あなたはあなたが(adminデータベースではなく)あなたが利用したいデータベースに切り替える必要があるでしょう...
use mydatabase
詳細については、この記事を参照してください... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
mongod --auth
を使用できます。Linuxの場合は、/etc/mongod.conf
ファイルを編集してsecurity.authorization : enabled
を追加し、mongdサービスを再起動できますmongo -u "admin" -p "admin123" --authenticationDatabase "admin"
経由で接続するには。それでおしまいこの投稿 をチェックして、詳細を確認し、mongooseを使用して接続する方法を学習できます。
これらのステップは私に働きました:
以下のようにmongoDBに接続するためのベストプラクティス:
初期インストール後
use admin
その後、次のスクリプトを実行して管理者ユーザーを作成します。
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
次のスクリプトはDBの管理ユーザーを作成します。
を使用してdb.adminにログインします。
mongo -u YourUserName -p YourPassword admin
ログイン後、1から3を繰り返すことで、同じ管理者資格情報または異なるN個のデータベースを作成できます。
これにより、MongoDBで作成したコレクションごとに異なるユーザーとパスワードを作成できます。
これは私がUbuntu 18.04でしたことです。
$ Sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({ user: "root", pwd: "rootpw", roles: [ "root" ] }) // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({ user: "lefa", pwd: "lefapw", roles: [ { role: "dbOwner", db: "lefa" } ] }) // admin of a db
> exit
$ Sudo vim /etc/mongodb.conf
auth = true
$ Sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase "lefa"
> use lefa
> exit
新しいユーザーを作成したら、そのユーザーに対するgrant
read/write/root
権限を忘れないでください。あなたが試すことができます
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])