MongoDB 유저 생성 및 Mongoose 커넥션 생성
MongoDB Mongoose 로 시작하기
User 설정
mongoDB는 처음에 유저 구분없이 로그인 된다. 즉 로그인하면 너님이 Admin 그 자체. 그래서 DB나 Collection 유저를 생성하고, 권한을 줘야한다.
use admin // db-name : admin
db.addUser('root', 'yourpassword') // admin DB에 생성하면 관리자로 자동 지정 ID 는 root 가 아니어도 된다.
use test // db-name : test
db.addUser('user1', 'userpwd1') // test DB 만을 위한 계정 생성
끝났으면 mongoDB 를 새롭게 재 가동한다. --auth 옵션을 주면 된다. 내 경우엔
C:\mongodb\bin\mongod --dbpath C:\mongodb\data --auth
그리고 나서 다시 mongo 클라이언트를 실행 시켜 컬렉션을 조회 해보면
C:\mongodb\bin>mongo
MongoDB shell version: 2.4.8
connecting to: test
> show collections
Sun Jan 12 15:28:22.404 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" : 16550
} at src/mongo/shell/query.js:128
이렇게 권한이 없다고 뜬다. 그러면 두가지 방법이 있는데, 처음부터 mongo 를 계정과 같이 실행 시키거나. 아니면 실행 시킨후 인증을 하면 된다. 나는 후자로 하겠다. (절대 첫번째 방법이 기억 안나서가 아님.)
> db.auth('user1', 'userpwd1')
1
> show collections
instances
system.indexes
system.users
db.auth('id', 'passwd') 를 통해 로그인 하면 된다. 리턴값이 1 이 나오면 성공적인 것. 이후에 show collections 명령도 잘 동작하지 않는가.
Mongoose 에서 계정 지정해 로그인 하기
별거 없다.
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); // 일반적인 커넥션 생성
mongoose.connect('mongodb://user1:userpwd1@localhost/test'); // 계정 지정하여 로그인
이번에 mongoose 를 사용하면서 느낀건데, 한 노드의 App 에는 하나의 DB로만 매핑이 되는 것 같다. 무슨 말인고 하니 처음으로 커넥션을 mongoose.connect 해서 사용하면, 이후에 다른 모듈에서 require 하면 해당 커넥션 된 걸로 제공 하는 것 같다. 차후에 더 테스팅 해보고 업데이트 하겠음.
Ref
Array