programing

MongoDB가 쿼리에 대해 인증되지 않음 - 코드 13

yellowcard 2023. 7. 4. 21:49
반응형

MongoDB가 쿼리에 대해 인증되지 않음 - 코드 13

MongoDB 2.6.1에서 dbAdmin 권한을 가진 사용자를 설정했습니다.

{
        "_id" : "mydbname.myusername",
        "user" : "myusername",
        "db" : "mydbname",
        "credentials" : {
                "MONGODB-CR" : "<some credentials>"
        },
        "roles" : [
                {
                        "role" : "dbAdmin",
                        "db" : "mydbname"
                }
        ]
}

mongo 셸을 사용하여 데이터베이스에 연결하고(명령줄에서 -u 및 -p 사용) 다음과 같은 쿼리를 실행할 때:

db.mycollectionname.find()

다음 오류가 발생했습니다.

error: { "$err" : "not authorized for query on mydbname.request", "code" : 13 }

무슨 일이 일어날 수 있는지 아십니까?

지금까지 제가 찾을 수 있는 모든 역할을 사용자에게 추가하려고 했지만 도움이 되지 않았습니다.

해당 사용자에게 역할을 할당해야 합니다.

이 역할에는 비시스템 컬렉션에 대한 읽기 액세스가 포함되지 않습니다.

Mongo 3.0.6에 대해 이 문제에 부딪히는 사람을 위해, 저는 다음과 같이 수정했습니다.

?authMode=scram-sha1

내 몽고드부리 끝에.

다음은 scram-sha1의 목적을 설명하는 몇 가지 문서입니다.

@Sebastian의 대답 외에도, 그것은 명시적으로 다음을 의미합니다.

역할 부여

db.grantRolesToUser() 메서드를 사용하여 역할을 부여합니다.예를 들어, 다음 작업은 사용자에게 계정 데이터베이스에 대한 읽기 역할을 부여합니다.

db.grantRolesToUser(
    "your_user",
    [
      { role: "read", db: "your_db" }
    ]
)

온라인에서 이 해결책을 찾는 데 어려움이 있어서 글을 올립니다.문제는 당황스럽지만 오류 메시지와 시나리오로 인해 파악하기가 다소 어려워 누군가의 고통을 덜어주고 싶습니다.내 애플리케이션은 데이터베이스 연결을 설정하고 정적 페이지를 시작하고 서비스할 수 있었지만 쿼리를 실행할 때마다 이 오류가 발생했습니다.

MongoError: not authorized on mydb to execute command { count: "urls", query: {} }

이 오류는 사용자 ID와 암호가 잘못된 구분 기호로 인해 발생했습니다.

mongodb://myuserid/mypassword@ds112345.mlab.com:12345/mydb [wrong]
mongodb://myuserid:mypassword@ds112345.mlab.com:12345/mydb [right]

노드 응용 프로그램이 MongoDB에 성공적으로 연결할 수 있는 동안 잘못된 형식의 URI로 인해 드라이버가 데이터베이스 명령을 실행하기 전에 인증을 건너뜁니다.

mLab 지원 담당자들에게 감사와 모자 팁을 드립니다.

나의 경우 추가하는 데 도움이 되었습니다.?authSource=admin우리를 위하여.

그래서 우리는 다음과 같이 보였습니다.

spring.data.mongodb.uri=mongodb://user:password@host:port/database?authSource=admin

다음과 같은 오류가 발생했습니다.

오류 {MongoError: XXXX에서 {$eval: function(){return db.tbl_user.find({) 명령을 실행할 권한이 없습니다.

내 역할 실행기능이 작동했습니다.역할을 지정하면 사용자는 다음과 같이 보여야 합니다.

"_id" : "XXXX", "사용자" : "USERXXX", "db" : "DBXXXX", "역할" : [ { "role" : "실행"함수", "db" : "admin" }, {"role" : "dbOwner", "db" : "friendsapp" }}}

많은 시행착오 끝에 사용자에게 "읽기" 역할을 추가하고 데이터베이스를 표시함으로써 동일한 문제를 해결 방법은 다음과 같습니다.

db.grantRolesToUser("myUserName",
[{ role: "read", db: "myDataBaseName"}] );

인사말

저는 제가 실수했다는 것을 깨닫기 전까지 같은 문제를 겪고 있었습니다.부모 Perl 클래스에서 다른 데이터베이스를 가리키는 mongo 클라이언트를 저도 모르게 상속하고 있었습니다.아마 확인할 수 있는 것일 겁니다.

언급URL : https://stackoverflow.com/questions/23619018/mongodb-not-authorized-for-query-code-13

반응형