mongodb 시작하기

$ sudo service mongod start

 

mongodb shell 시작

$ mongo

 

database 종류 확인

> show databases

 

database 사용(선택)

> use {database이름}

 

collection 종류 확인

(db 선택 이후)

> show collections

 

collection 제거

> db.{collection 이름}.drop()

 

document 추가

> db.{collection 이름}.insert({문서})

db.books.insert({"a":1})
WriteResult({ "nInserted" : 1 })

 

document bulk insert

> db.{collection 이름}.insert([{문서}])

db.books.insert([{"a":1},{"b": 1}])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})

 

document 찾기

> db.{collection 이름}.find({조건})

{조건}도 json 형태로 입력

 

document 지우기(조건 맞는 모든 document 지우기)

> db.{collection 이름}.remove({조건})

{조건}도 json 형태로 입력

 

document 지우기(조건 맞는 하나의 document 지우기)

> db.{collection 이름}.remove({조건}, true)

{조건}도 json 형태로 입력

'Development > Database' 카테고리의 다른 글

MongoDB에서 Connection Pool 구성 하기  (0) 2017.02.13
MongoDB Ubuntu에 설치하기  (0) 2017.02.10
MongoDB 에서 admin 만들기  (2) 2017.02.10

MongoDB의 Connection Pool은 MongoDB Java Driver에서 지원된다.


connection string에서 option 있는데 maxPoolSize option 통해서 pool size 지정할수 있음

mongodb://host:27017/?replicaSet=rs0&maxPoolSize=200


connection pool 관련 uri option은 아래와 같다.

 Connection pool configuration:

  • maxPoolSize=n: The maximum number of connections in the connection pool.
  • waitQueueMultiple=n : this multiplier, multiplied with the maxPoolSize setting, gives the maximum number of threads that may be waiting for a connection to become available from the pool. All further threads will get an exception right away.
  • waitQueueTimeoutMS=ms: The maximum wait time in milliseconds that a thread may wait for a connection to become available.


전문은 아래 참조

http://api.mongodb.com/java/3.0/?com/mongodb/MongoClientURI.html

'Development > Database' 카테고리의 다른 글

MongoDB 기본 명령어  (0) 2019.10.19
MongoDB Ubuntu에 설치하기  (0) 2017.02.10
MongoDB 에서 admin 만들기  (2) 2017.02.10

MongoDB 64-bit LTS 공식 지원(12.04, 14.04, 16.04)

 

기본 ubuntu에서 apt-get으로 나오는 mongodb, mongodb-clients, mongodb-server 깔지 말것

 

1. GPG key 받기

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4


2. MongoDB source list 추가

Ubuntu 16.04

 echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

 Ubuntu 12.04

 echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

 Ubuntu 14.04

 echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

 Ubuntu 18.04 echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse"|sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list



3. apt-get 목록 update

$ sudo apt-get update 


4. 설치

$ sudo apt-get install mongodb-org


5. MongoDB 시작

$ sudo service mongod start



참조: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

'Development > Database' 카테고리의 다른 글

MongoDB 기본 명령어  (0) 2019.10.19
MongoDB에서 Connection Pool 구성 하기  (0) 2017.02.13
MongoDB 에서 admin 만들기  (2) 2017.02.10

MongoDB 설치하면 최초에 authentication 없다.

그래서 비밀번호나 id없이 접속하여 어떤 database에도 접근할수 있고 심지어 admin database에도 접근 가능하다. (물론 bindIp 설정을 건드리지 않았다면 local에서 만 접근 할수 있지만, 어쨌건 접근만 가능하면 login과정없이 들어가진다.)


설치과정에서 root의 비밀번호를 물어보는 mySql을 보다가 MongoDB를 보면 좀 의아하다..


그리고 그로 인해서 아래와 같은 문제도 발생 가능

 

일주일동안 27,000개 이상의 MongoDB가 랜섬웨어에 감염돼

http://blog.alyac.co.kr/923


-_-)... 잘 모르겠지만 Production에 적용하기 위해서는 DB자체 말고 DB가 설치된 서버에 무엇인가 보안을 위한 조치가 필요할것 같다.


어쨌건 처음에 root나 admin의 개념이 없기때문에 생성해 주어야 하는데, 명시적으로 계정과 비밀번호를 만들고, authentication option enable해주어야 한다.


좀더 자세히 설명하면


1. MongoDB에서 admin 계정 만들기

admin Database에서 createUser 명령어로 admin 계정을 만든다. 계정이름은 admin이 아니어도 상관없음

use admin

db.createUser(
  {
    user
: "admin",
    pwd
: "abc123",
    roles
: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)


2. security.authorization 옵션 enable

sudo로 MongoDB 설정 파일을 수정해야 한다.

$ sudo vi /etc/mongod.conf 


파일이 열렸으면 아래 항목을 추가 한다.

 security:

   authorization: enabled


3. MongoDB 재시작

sudo service mongod restart



Authentication 설정 이후에는 아래와 같은 방법으로 MongoDB에 접근해야 한다.
p옵션 뒤에 비밀번호를 적어주어도 된다.

 $ mongo -u "admin" -p --authenticationDatabase "admin"

MongoDB shell version v3.4.2

Enter password:

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.4.2

>


혹은 shell안에서 login하는 방법은 아래와 같다.

반드시 use admin으로 admin Database로 이동해주어야 한다.

use admin

db.auth("admin", "welcome!" )


그런데... 위와 같이 계정을 만들고 비번을 만들어도 그냥 바로 mongo 라는 명령어로 shell에 접속 가능하다-_- 물론 접근한 이후에 Database에는 접근 불가


비록 admin을 만들었지만, 생성시 role을 admin Database에만 주었으므로, 다른 Database는 접근할 수 없다-_- 

이건 admin도 admin이 아닌것도 아닌.....

다시말하면 위의 과정으로 생성된 계정은 admin Database에 대한 관리 권한을 가지게 되는 것이다.


따라서 실제 data를 저장하기 위한 Database에도 계정을 따로 만들어주어야 한다.

아니면 admin에 다 role을 추가 해주면 되긴 되겠으나..안해봄-_-



'Development > Database' 카테고리의 다른 글

MongoDB 기본 명령어  (0) 2019.10.19
MongoDB에서 Connection Pool 구성 하기  (0) 2017.02.13
MongoDB Ubuntu에 설치하기  (0) 2017.02.10

+ Recent posts