원격 액세스가 사용자 이름 및 비밀번호를 요청하도록 MongoDB 인스턴스에 대한 사용자 이름 및 비밀번호 인증을 설정하려고합니다. MongoDB 사이트에서 튜토리얼을 시도하고 다음을 수행했습니다.
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
그 후, 나는 나가서 몽고를 다시 달렸다. 그리고 액세스하기 위해 비밀번호가 필요하지 않습니다. 데이터베이스에 원격으로 연결하더라도 사용자 이름 및 비밀번호를 묻는 메시지가 표시되지 않습니다.
업데이트 여기에 내가 사용한 해결책이 있습니다.
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
.
답변
당신은 시작해야 mongod
합니다--auth
사용자를 설정 한 후 옵션을 선택합니다.
MongoDB 사이트에서 :
--auth
보안을 활성화 하는 옵션으로 데이터베이스 (mongod 프로세스)를 실행하십시오 . 로 서버를 시작하기 전에 admin db에 사용자를--auth
추가했거나 localhost 인터페이스에서 첫 번째 사용자를 추가해야합니다.
답변
와우 너무 복잡하고 혼란스러운 답변이 여기에 있습니다.
이것은 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({})
답변
먼저 #auth=true
mongod 구성 파일에서 시작하는 행의 주석을 해제 하십시오 (기본 경로 /etc/mongo.conf
). mongodb에 대한 인증이 가능합니다.
그런 다음 mongodb를 다시 시작하십시오. sudo service mongod restart
답변
이 답변은 몽고 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
답변
다음은 사용자를 추가하는 자바 스크립트 코드입니다.
-
시작
mongod
과 함께--auth = true
-
mongo shell에서 관리자 데이터베이스에 액세스하고 javascript 파일을 전달하십시오.
몽고 관리자 “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 ");
-
이제 사용자 추가가 완료되었습니다. mongo 셸에서 데이터베이스 액세스를 확인할 수 있습니다
답변
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 다음 명령을 실행하십시오.
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/