오류: 사용자를 추가할 수 없음: 테스트에서 {createUser:
저는 MongoDB로 시작하고 있으며 dbs에 대한 액세스 권한을 사용자/패스하고 싶습니다.제가 가장 먼저 한 일은 사용자를 생성하고 관리한 후 auth activate로 mongodb를 시작한 것입니다. 이것은 제가 만든 사용자입니다.
db.getUser("admin")
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
}
] }
}
그런 다음 다음 명령을 사용하여 사용자를 생성하려고 합니다.
use newdb
db.createUser(
{
user: "newuser",
pwd: "12345678",
roles: [ { role: "readWrite", db: "newdb" } ]
}
)
하지만 다음 오류가 발생했습니다.
오류: 사용자를 추가할 수 없습니다. newdb에서 {createUser: "newuser", pwd: "xxx", 역할: [{role: "readWrite", db: "newdb" }, db: "newdb" }, digestPassw: false, writeContemberity", wtimeout: 30000.js: 1004 } 명령을 실행할 권한이 없습니다.
검색해봤는데 중국어에 대한 결과와 관련이 없는 결과 두 가지밖에 없어서 좀 막막합니다.감 잡히는 게 없어요?admin 사용자에게 권한이 없는 것 같습니다. 다음 명령을 사용하여 mongodb에 액세스합니다.
$mongo --port 27017 -u adminUser -p adminPass --authenticationDatabase admin
잘 부탁드립니다.
mongod의 실행 중인 인스턴스를 중지mongod --config /usr/local/etc/mongod.conf --auth
그런 다음 없이 시작합니다.--auth맘에 들다mongod --config /usr/local/etc/mongod.conf
다음과 같이 역할을 업데이트합니다.
db.updateUser("admin", {roles: ["userAdminAnyDatabase", "userAdmin", "readWrite", "dbAdmin", "clusterAdmin", "ReadWriteAnyDatabase", "dbAdminAnyDatabase"]);
이제 다시 mongod를 시작합니다.--auth그리고 해보세요.
위에서 언급한 모든 역할을 가진 "admin" 데이터베이스에서 사용자를 생성해야 합니다.
그러나 이 사용자는 다른 데이터베이스의 일부가 아닙니다.일단 관리자 사용자를 생성하면,
그런 다음 해당 관리 사용자로 로그인합니다.
서버: mongod --config /usr/local/etc/mongod.conf --auth
클라이언트: ./mongodb/bin/mongo localhost: 27017/admin -u adminUser -p 123456
use APPLICATION_DB
다시 이 APPLICATION_DB에 대한 새 사용자(예: APP_USER)를 생성합니다.이 응용 프로그램 사용자의 경우 "dbOwner" 역할만 필요합니다.
db.createUser({user:"test", pwd:"test", roles:['dbOwner']})
이제 애플리케이션은 이 APP_USER 및 APP_DB를 사용해야 합니다.
동일한 문제를 해결했습니다. 종료하고 관리자로 로그인하십시오.
mongo -u admin
관리자 사용자 암호 입력
로그인 후, 언급한 대로 사용자를 생성합니다.
use newdb
db.createUser(
{
user: "newuser",
pwd: "12345678",
roles: [ { role: "readWrite", db: "newdb" } ]
}
)
내 경우:
1.mongodb 중지:
$ service mongod stop
2.이 /etc/mongod.conf를 실행합니다.
security:
authorization: "disabled"
3. 그런 다음 서비스를 다시 시작합니다.
$ service mongod start
4.사용자 추가:
$ mongo mongodb://localhost:27017
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
5.2단계에서 추가한 /etc/mongod.conf의 줄 바꾸기
6.산호몽고드
service mongod restart
현재 mongod 프로세스를 종료하고 매개 변수 없이 다시 시작해야 합니다.--auth.
유형: 터널유형미:mongod
mongod 프로세스가 시작되면 새 터미널 탭을 열어 mongo 셸 명령을 실행할 수 있습니다.
mongo --shell
use new_your_database
db.createUser(
{
user: "mongo_admin",
pwd: "mongo_admin",
roles: [ "readWrite", "dbAdmin" ]
}
)
그것은 성공적으로 끝나야 합니다...
아래 명령은 admin 사용자와 암호를 생성했음을 나타냅니다.
db.getUser("admin")
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
}
] }
}
일단 admin 사용자와 암호를 만들면 Mongo는 이전에 로그인할 때 사용했던 일반 admin 사용자로서 스키마 업데이트를 수행할 수 없습니다.
새로 만든 admin 사용자 및 암호를 사용하여 새 사용자를 만들거나 업데이트를 수행합니다.그건 작동할 거야.
만약 당신이 같은 문제로 여기에 있고 mongod 인스턴스를 트리거하는 구성 파일을 가지고 있다면, 계속해서 mongod의 실행 프로세스를 종료하고 구성 파일에서 보안을 유지해야 합니다.authorization : 비활성화되었습니다. keyFile(즉, 인증서 파일의 경로)이 있는 경우 추가로 해당 사양에 주석을 달면 해당 구성 파일을 사용하여 mongod 프로세스를 시작합니다. admin db를 사용하여 사용자를 만들 수 있어야 합니다.
복제 세트에서 작업하는 경우: 기본 노드 + 사용자를 만든 후 복제 세트를 시작하고 연결해야 합니다(다시 기본 노드에 내부적으로 연결). 여기서는 이전에 생성된 사용자를 사용하여 모든 작업을 수행할 수 있지만 rs.initiate()/rs와 같은 몇 가지 명령을 다시 실행할 수 있습니다.status(상태)/showdbs/showusers(사용자가 인증되지 않음)와 같은 오류가 발생할 수 있습니다.
security:
authorization: disabled
# keyFile: /opt/mongodb/keyfile
언급URL : https://stackoverflow.com/questions/27784956/error-couldnt-add-user-not-authorized-on-test-to-execute-command-createuser
'codememo' 카테고리의 다른 글
| Oracle에서 Timestamp_to_scn 및 Scn_to_timestamp를 사용하는 방법은 무엇입니까? (0) | 2023.07.13 |
|---|---|
| 트랜잭션 내에서 테이블 잘라내기 (0) | 2023.07.13 |
| "int"와 "int_fast16_t"의 차이점은 무엇입니까? (0) | 2023.07.07 |
| Mongoose 채우기 하위 하위 문서 (0) | 2023.07.07 |
| Next.js에서 next-env.d.ts 파일을 어떻게 사용합니까? (0) | 2023.07.07 |