[MONGODB] 몽고에 인증 할 수 없습니다 "인증 실패"
MONGODB몽고에 인증 할 수 없습니다 "인증 실패"
나는이 방향을 사용하여 몽고에 대한 관리 사용자를 만들었습니다 :
http://docs.mongodb.org/manual/tutorial/add-user-administrator/
내가 인증 할 수처럼 몽고 클라이언트에서 그것은 본다 :
> use admin
switched to db admin
> db.auth('admin','SECRETPASSWORD');
1
>
그러나 나는 다른 방법으로 연결할 수 없습니다. 예를 들면 :
오류를 제공합니다 :
JavaScript execution failed: Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:L228
나는 인증이 등 / mongod.conf에서 진정한 =이있다.
나는 무엇을 놓치고?
해결법
-
==============================
1.인증은 데이터베이스 수준에서 관리됩니다. 데이터베이스를 사용하여 시스템에 연결하려고하면 실제로 컬렉션 <데이터베이스> .system.users에서 제공하는 자격 증명을 확인 몽고. 그래서, 당신은 "테스트"에 연결하려고 기본적으로 할 때, 그것은 test.system.users의 자격 증명을보고 (그들이 admin.system.users에 저장되어있는 바와 같이) 그들을 찾을 수 없기 때문에 오류를 반환합니다. 모든 DB에서 읽을 수있는 권리와 쓰기를 갖는 것은 당신이 직접 연결할 수 있습니다 의미하지 않는다.
인증은 데이터베이스 수준에서 관리됩니다. 데이터베이스를 사용하여 시스템에 연결하려고하면 실제로 컬렉션 <데이터베이스> .system.users에서 제공하는 자격 증명을 확인 몽고. 그래서, 당신은 "테스트"에 연결하려고 기본적으로 할 때, 그것은 test.system.users의 자격 증명을보고 (그들이 admin.system.users에 저장되어있는 바와 같이) 그들을 찾을 수 없기 때문에 오류를 반환합니다. 모든 DB에서 읽을 수있는 권리와 쓰기를 갖는 것은 당신이 직접 연결할 수 있습니다 의미하지 않는다.
먼저 자격 증명을 잡고 데이터베이스에 연결해야합니다. 시험:
mongo admin -u admin -p SECRETPASSWORD
더 많은 정보를 원하시면,이를 확인 http://docs.mongodb.org/manual/reference/privilege-documents/
-
==============================
2.나는 또한 사용자 인증 데이터가 저장된 데이터베이스를 지정하는 것이었다 필요로했던이 오류를 수신 :
나는 또한 사용자 인증 데이터가 저장된 데이터베이스를 지정하는 것이었다 필요로했던이 오류를 수신 :
업데이트 2017년 11월 18일 :
mongo admin -u admin -p
더 나은 솔루션입니다. 몽고, 당신의 암호를 그냥 끔찍한 보안 방법입니다 쉘의 역사로 일반 텍스트 암호를 설정하지 않습니다 이런 식으로 메시지를 표시합니다.
-
==============================
3.당신은 당신의 몽고 쉘을 업그레이드해야합니다. 나는 로컬 몽고 쉘의 버전 2.4.9을했고, 나는 몽고 3 데이터베이스에 연결하려고이 오류가 발생했습니다. 3 쉘 버전을 업그레이드 문제를 해결했다.
당신은 당신의 몽고 쉘을 업그레이드해야합니다. 나는 로컬 몽고 쉘의 버전 2.4.9을했고, 나는 몽고 3 데이터베이스에 연결하려고이 오류가 발생했습니다. 3 쉘 버전을 업그레이드 문제를 해결했다.
-
==============================
4.나는이 명백한 것처럼 보일 수 있습니다 알고 있지만 나는 또한이 일을하기 전에 W / U 자 / N과 P의 주위에 작은 따옴표를 사용했다
나는이 명백한 것처럼 보일 수 있습니다 알고 있지만 나는 또한이 일을하기 전에 W / U 자 / N과 P의 주위에 작은 따옴표를 사용했다
-
==============================
5.MongoDB를 3.0, 지금은 다중 인증 메커니즘을 지원합니다.
MongoDB를 3.0, 지금은 다중 인증 메커니즘을 지원합니다.
사용자가 만든 새로운 사용자와 새로운 3.0 데이터베이스를 시작한 경우, 그들은 스크 램-SHA-1을 사용하여 생성 된 것이다.
그래서 당신은 그 인증 할 수있는 드라이버가 필요합니다 :
http://docs.mongodb.org/manual/release-notes/3.0-scram/#considerations-scram-sha-1-drivers
당신이 데이터베이스가 기존 사용자 데이터와 2.X에서 업그레이드했다면, 그들은 여전히 MongoDB를-CR을 사용하는 것, 사용자 인증 데이터베이스를 업그레이드해야 할 것이다 :
http://docs.mongodb.org/manual/release-notes/3.0-scram/#upgrade-mongodb-cr-to-scram
이제 달아나-SHA-1을 작성한 사용자와 접속하여 MongoDB 3.0 (커맨드 라인을 통해 몽고 클라이언트) 인증 데이터베이스를 지정해야하고, 드라이버를 사용하는 경우에, 다른 메커니즘을 사용한다.
$> 몽고 -u 사용자 -p PASSWORD --authenticationDatabase 관리
이 경우,도하다 "관리자"데이터베이스는 기본적으로 인증하는 데 사용됩니다.
-
==============================
6.문제가 몽고의 문서에 기술 된 방법을 통해 생성 된 사용자가 해당 사용자가 "userAdminAnyDatabase"와 "dbAdminAnyDatabase"역할로 생성 된 경우에도 기본 데이터베이스 (테스트)에 연결할 수있는 권한이 없다는 것입니다 나타납니다.
문제가 몽고의 문서에 기술 된 방법을 통해 생성 된 사용자가 해당 사용자가 "userAdminAnyDatabase"와 "dbAdminAnyDatabase"역할로 생성 된 경우에도 기본 데이터베이스 (테스트)에 연결할 수있는 권한이 없다는 것입니다 나타납니다.
-
==============================
7.터미널 쉘 및 유형 몽고로 이동합니다.
터미널 쉘 및 유형 몽고로 이동합니다.
그런 다음 사용 DB_NAME을 입력합니다.
그런 다음 입력 :
db.createUser( { user: "mongodb", pwd: "dogmeatsubparflavour1337", roles: [ { role: "dbOwner", db: "db_name" } ] } )
또한 시도 : db.getUsers을 ()
const MongoClient = require('mongodb').MongoClient; // MongoDB Connection Info const url = 'mongodb://mongodb:dogmeatsubparflavour1337@stackoverflow.com:27017/?authMechanism=DEFAULT&authSource=db_name'; // Additional options: https://docs.mongodb.com/manual/reference/connection-string/#connection-string-options // Use Connect Method to connect to the Server MongoClient.connect(url) .then((db) => { console.log(db); console.log('Casually connected correctly to server.'); // Be careful with db.close() when working asynchronously db.close(); }) .catch((error) => { console.log(error); });
-
==============================
8.이것은 특정 케이스의 종류이지만, 경우에 사람이 내 문제를 여기에 가져옵니다
이것은 특정 케이스의 종류이지만, 경우에 사람이 내 문제를 여기에 가져옵니다
MongoHQ에서, 그것은 당신에게 "비밀 번호"라는 필드를 보여주지,하지만 실제로 암호의 단지 해시입니다. 새 사용자를 추가하고 (MongoHQ가 광고를 표시하지 않습니다 때문에) 다른 암호를 저장해야합니다.
-
==============================
9.몽고 쉘에 로그인하는 적절한 방법은
몽고 쉘에 로그인하는 적절한 방법은
몽고는 로컬 호스트 : 27,017 -u 'uuuuu'-p '> XXXXXX'--authenticationDatabase DBNAME
-
==============================
10.또 다른 가능성 : 당신이 사용자를 생성 할 때, 당신은 실수로 당신이 원하는 것보다 관리자 이외의, 또는 다른 데이터베이스를 useing되었을 수 있습니다. 당신은 사용자가 실제로에서 만들어 졌는지 데이터베이스에 --authenticationDatabase를 설정해야합니다.
또 다른 가능성 : 당신이 사용자를 생성 할 때, 당신은 실수로 당신이 원하는 것보다 관리자 이외의, 또는 다른 데이터베이스를 useing되었을 수 있습니다. 당신은 사용자가 실제로에서 만들어 졌는지 데이터베이스에 --authenticationDatabase를 설정해야합니다.
MongoDB를 사용하면 쉘을 열 때 당신은 당신이 (db.createUser을 실행했을 때 실수로 테스트를 useing 있다면 --authenticationDatabase 시험보다는 --authenticationDatabase 관리자를 작성해야 것 때문에, 기본적으로 테스트 데이터베이스에 넣을 것 같다 ... ).
당신은 MongoDB의 인스턴스를 실행중인 컴퓨터에 액세스 할 수있는 가정, y를 누른 후 (보안 아래에 중첩되어 인증 밖으로 코멘트) 및 /etc/mongod.conf에서 해제 권한은 서버를 다시 시작한 다음 실행할 수 있습니다 :
mongo show users
그리고 당신이 뭔가를 얻을 수 있습니다 :
{ "_id" : "test.myusername", "user" : "myusername", "db" : "test", "roles" : [ { "role" : "dbOwner", "db" : "mydatabasename" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
dB 값이 테스트를 동일 공지 사항. 나는 사용자를 만들 때, 처음 사용하는 관리자 또는 사용 desiredDatabaseName을 실행하지 않았기 때문에의 그. 당신은 db.dropUser와 사용자 ( "MyUserName 에다")를 삭제하고 다음과 같이 원하는 데이터베이스에서 다른 사용자를 생성 할 수 있습니다 :
use desiredDatabaseName db.createUser(...)
희망이이 물건 멍청한 놈으로 내 위치에 있던 사람을 도움이됩니다.
-
==============================
11.당신이 시도 할 수 있습니다 : -
당신이 시도 할 수 있습니다 : -
mongo localhost:27017/admin -u admin -p SECRETPASSWORD
이 게시물에 발견
여기에 분명히 로컬 호스트는 다른 호스트가 될 수 있고, / 관리자 인증이 적용된 일부 다른 데이터베이스가 될 수
-
==============================
12.우리는 서버를 몽고에 연결되는 곳에서 클라이언트의 몽고 버전을 확인합니다.
우리는 서버를 몽고에 연결되는 곳에서 클라이언트의 몽고 버전을 확인합니다.
내 경우는 몽고 서버 버전 Mongo4.0.0이었다 그러나 나의 클라이언트는 버전 2.4.9이었다. 몽고 CLI를 업데이트 할 몽고 버전을 업데이트합니다.
from https://stackoverflow.com/questions/18216712/cannot-authenticate-into-mongo-auth-fails by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 문서에서 일부 필드를 제외하는 방법 (0) | 2019.12.13 |
---|---|
[MONGODB] 몽구스 : 깊은 인구 (채워진 필드를 채울) (0) | 2019.12.13 |
[MONGODB] 어떻게 다른 하나 개의 MongoDB를 서버에서 데이터베이스를 복사합니까? (0) | 2019.12.13 |
[MONGODB] DBRef와 MongoDB를를 조회하는 방법 (0) | 2019.12.13 |
[MONGODB] 또 다른 컬렉션에 MongoDB를 컬렉션의 저장 부분 집합 (0) | 2019.12.13 |