로컬 및 프로덕션에서 동일한 연결 문자열을 사용하고 있습니다. 연결 문자열이mongodb://localhost/mydb
사용자 이름과 비밀번호는 무엇입니까? 이런 식으로 보관하는 것이 안전합니까?
답변
기본적으로 mongodb에는 활성화 된 액세스 제어가 없으므로 기본 사용자 또는 암호가 없습니다.
액세스 제어를 활성화하려면 명령 줄 옵션 --auth
또는 security.authorization 구성 파일 설정을 사용하십시오.
다음 절차를 사용 하거나 인증 활성화를 참조하십시오. MongoDB 문서에서 .
순서
-
액세스 제어없이 MongoDB를 시작합니다.
mongod --port 27017 --dbpath /data/db1
-
인스턴스에 연결합니다.
mongo --port 27017
-
사용자 관리자를 만듭니다.
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
-
액세스 제어를 사용하여 MongoDB 인스턴스를 다시 시작하십시오.
mongod --auth --port 27017 --dbpath /data/db1
-
사용자 관리자로 인증하십시오.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \ --authenticationDatabase "admin"
답변
@Camilo Silva가 이미 언급 한 것 외에도 데이터베이스 생성, 데이터베이스 읽기, 쓰기 등의 무료 액세스 권한을 부여하고 싶지만 루트 역할을 생성하지 않으려면 다음과 같이 세 번째 단계를 변경할 수 있습니다.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" } ]
}
)
답변
이전 2.6 이상의 MongoDB를 들어, 명령은 루트 사용자가 추가 할 수 있습니다 addUser
(예를)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
답변
이전에 제공된 답변 외에도 db가 이미 액세스 제어 ( --auth
스위치)로 시작된 경우 첫 번째 사용자를 생성하기 위해 ‘localhost 예외’접근 방식을 따르는 것이 하나의 옵션입니다 . 이를 위해서는 서버에 대한 localhost 액세스 권한이 있어야하며 다음을 실행해야합니다.
mongo
use admin
db.createUser(
{
user: "user_name",
pwd: "user_pass",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" }
]
})
MongoDB 문서에 명시된대로 :
localhost 예외를 사용하면 액세스 제어를 활성화 한 다음 시스템에서 첫 번째 사용자를 만들 수 있습니다. localhost 예외와 함께 액세스 제어를 활성화 한 후 localhost 인터페이스에 연결하고 관리 데이터베이스에 첫 번째 사용자를 만듭니다. 첫 번째 사용자는 userAdmin 또는 userAdminAnyDatabase 역할이있는 사용자와 같은 다른 사용자를 생성 할 수있는 권한이 있어야합니다. localhost 예외를 사용하는 연결은 관리 데이터베이스에서 첫 번째 사용자를 만들 수있는 액세스 권한 만 갖습니다.
다음은 문서의 해당 섹션 에 대한 링크 입니다.
답변
