codememo

오류: 사용자를 추가할 수 없음: 테스트에서 {createUser:

tipmemo 2023. 7. 7. 19:04
반응형

오류: 사용자를 추가할 수 없음: 테스트에서 {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

반응형