와우 너무 복잡하고 혼란스러운 답변이 여기에 있습니다.
이것은 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
인증 데이터베이스 에 사용자 관리자를 작성 합니다. 사용자는 데이터베이스 dbOwner
가 아니라 some_db
데이터베이스가 아니라 admin
기억해야합니다.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
또는 모든 데이터베이스에서 관리자 인 관리자를 작성하려면 다음을 수행하십시오.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) MongoDB 인스턴스를 중지하고 액세스 제어로 다시 시작하십시오.
mongod --auth --dbpath /data/db
5) admin
인증 데이터베이스가 아닌 인증 데이터베이스에 대한 사용자 관리자로 연결하고 인증하십시오 some_db
. 사용자 관리자가 admin
인증 데이터베이스 에서 작성되었으며 사용자가 some_db
인증 데이터베이스에 없습니다.
use admin
db.auth("myDbOwner", "abc123")
이제 데이터베이스 dbOwner
이상으로 인증되었습니다 some_db
. 이제 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 셸을 종료하고 다시 연결하고 사용자로 인증하십시오.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})