MongoDB "root" 사용자
MongoDB용 "root" 사용자 같은 슈퍼 UNIX가 있습니까?http://docs.mongodb.org/manual/reference/user-privileges/을 보고 여러 가지 조합을 시도했지만 모두 부족한 것 같습니다.분명히 거기에 열거된 모든 역할보다 더 중요한 역할이 있다.
최고의 슈퍼 유저 역할은 루트가 됩니다.구문은 다음과 같습니다.
use admin
db.createUser(
{
user: "root",
pwd: "password",
roles: [ "root" ]
})
개봉 후 MongoDb에 인증이 없는 동안 특정 사용자에 대한 "임의" 역할을 사용하여 루트/슈퍼유저와 동등한 기능을 생성할 수 있습니다.admin
데이터베이스입니다.
다음과 같은 경우:
use admin
db.addUser( { user: "<username>",
pwd: "<password>",
roles: [ "userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase"
] } )
2.6+ 갱신
2.6에 새로운 루트 사용자가 추가되었지만 다음과 같은 몇 가지 제한이 있기 때문에 사용자의 요구를 충족하지 못할 수 있습니다.
readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase 및 clusterAdmin 역할의 작업 및 모든 리소스에 대한 액세스를 제공합니다.
root에는 시스템에서 시작하는 컬렉션에 대한 액세스는 포함되지 않습니다.프레픽스
3.0+용 업데이트
사용하다db.createUser
~하듯이db.addUser
삭제되었습니다.
3.0.7+ 업데이트
root에는 위에서 설명한 제한이 없습니다.
루트에 시스템에서 권한 확인 작업이 있습니다.수집.이전에는 루트에 시스템에서 시작하는 컬렉션에 대한 액세스는 포함되어 있지 않았습니다.시스템 이외의 프레픽스.인덱스와 system.namespaces를 지정합니다.
Mongodb 사용자 관리:
역할 목록:
read
readWrite
dbAdmin
userAdmin
clusterAdmin
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase
사용자 생성:
db.createUser(user, writeConcern)
db.createUser({ user: "user",
pwd: "pass",
roles: [
{ role: "read", db: "database" }
]
})
사용자 업데이트:
db.updateUser("user",{
roles: [
{ role: "readWrite", db: "database" }
]
})
사용자 삭제:
db.removeUser("user")
또는
db.dropUser("user")
사용자 표시:
db.getUsers();
상세 정보: https://docs.mongodb.com/manual/reference/security/ #읽기
Superuser Roles가 있습니다.루트는 빌트인 역할로 사용자의 요구를 충족시킬 수 있습니다.
다음과 같은 답변이 많았습니다.다음 명령을 사용합니다.
use admin
관리 데이터베이스로 전환됩니다.적어도 Mongo v4.0.6 에서는, 관리 데이타베이스의 컨텍스트에서 유저를 작성하면, 다음의 유저가 작성됩니다."_id" : "admin.administrator"
:
> use admin
> db.getUsers()
[ ]
> db.createUser({ user: 'administrator', pwd: 'changeme', roles: [ { role: 'root', db: 'admin' } ] })
> db.getUsers()
[
{
"_id" : "admin.administrator",
"user" : "administrator",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
강조합니다"admin.administrator"
admin과는 다른 데이터베이스를 가진 Mongoid(mongodb ruby adapter) 어플리케이션이 있으며 URI를 사용하여 mongoid.yml 설정에서 데이터베이스를 참조합니다.
development:
clients:
default:
uri: <%= ENV['MONGODB_URI'] %>
options:
connect_timeout: 15
retry_writes: false
이는 다음 환경변수를 참조합니다.
export MONGODB_URI='mongodb://administrator:changeme@127.0.0.1/mysite_development?retryWrites=true&w=majority'
데이터베이스가 mysite_development이지 admin이것에 주의해 주세요.응용 프로그램을 실행하려고 하면 "User Administrator(mechanism: scram256) is not authorized to access mysite_development"라는 오류가 나타납니다.
Mongo 쉘로 돌아가 사용자를 삭제하고 지정된 데이터베이스로 전환하여 사용자를 다시 만듭니다.
$ mongo
> db.dropUser('administrator')
> db.getUsers()
[]
> use mysite_development
> db.createUser({ user: 'administrator', pwd: 'changeme', roles: [ { role: 'root', db: 'admin' } ] })
> db.getUsers()
[
{
"_id" : "mysite_development.administrator",
"user" : "administrator",
"db" : "mysite_development",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
응용 프로그램이 의존하는 특정 데이터베이스를 참조하기 위해 변경된 _id 및 db:
"_id" : "mysite_development.administrator",
"db" : "mysite_development",
변경 후 오류가 해소되어 어플리케이션 내 MongoDB에 정상적으로 접속할 수 있었습니다.
추가 주의:
위의 예에서는 사용자를 삭제하고 올바른 데이터베이스 컨텍스트에서 사용자를 다시 만들었습니다.올바른 데이터베이스 컨텍스트에서 사용자를 이미 작성했지만 잘못된 역할을 지정한 경우 사용자에게 mongodb 삽입 역할을 할당할 수 있습니다.
db.grantRolesToUser('administrator', [{ role: 'root', db: 'admin' }])
요.db.updateUser
명령어, albiet는 일반적으로 사용자 비밀번호 갱신에 사용됩니다.
시스템 전체의 인증 데이터에만 사용되는 단일 DB를 사용하는 것이 일반적입니다.connection uri 에서는, 접속하고 있는 db 를 지정하는 것 외에, 인증에 사용하는 db 를 지정할 수도 있습니다.
"mongodb://usreName:passwordthatsN0tEasy2Gue55@mongodb.myDmoain.com:27017/enduserdb?authSource=myAuthdb"
이렇게 하면 해당 단일 인증 데이터베이스에 모든 사용자 자격 증명과 역할을 생성할 수 있습니다.예를 들어, "root@thedbin question" 역할을 부여하고 모든 슈퍼 사용자를 DB에서 종료하려면 다음과 같이 하십시오.
use admin
db.runCommand({
"updateUser" : "anAdminUser",
"customData" : {
},
"roles" : [
{
"role" : "root",
"db" : "thedbinquestion"
} ] });
이제 콘솔에서 내장 역할을 atlas admin으로 변경할 수 있습니다.이것으로 문제가 해결되었습니다.
userAdmin은 사실상 특정 데이터베이스의 슈퍼유저 역할입니다.userAdmin을 가진 사용자는 자신에게 모든 권한을 부여할 수 있습니다.단, userAdmin은 사용자 관리 이외의 권한에 대해 사용자에게 명시적으로 허가하지 않습니다.
언급URL : https://stackoverflow.com/questions/20117104/mongodb-root-user
'itsource' 카테고리의 다른 글
쟈스민 모크 클럭으로 $timeout을 사용하는 Unit Testing Angular 서비스 (0) | 2023.03.28 |
---|---|
스타일 구성 요소 구성 (0) | 2023.03.28 |
jQuery에서 JSON 배열을 HTML 테이블로 변환 (0) | 2023.03.28 |
리액트 컴포넌트에서 외부 Javascript 함수를 호출합니다. (0) | 2023.03.23 |
AJAX를 사용하여 인증 토큰을 Rails로 전송하는 적절한 방법 (0) | 2023.03.23 |