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
'programing' 카테고리의 다른 글
web.xml을 사용하여 스프링 부트 응용 프로그램 구성 (0) | 2023.07.04 |
---|---|
os.path.sysname(__file_)이(가) 비어 있음을 반환합니다. (0) | 2023.07.04 |
문서 데이터베이스:중복 데이터, 참조 자료 등(특히 MongoDB) (0) | 2023.07.04 |
데이터베이스의 보기를 업데이트할 수 있습니까? (0) | 2023.07.04 |
"__block" 키워드는 무엇을 의미합니까? (0) | 2023.06.29 |