รวมคำสั่งที่ใช้ประจำสำหรับ MongoDB v.3

รวมคำสั่งที่ใช้ประจำสำหรับ MongoDB v.3

ระยะหลังโปรเจ็คแต่ละครั้งของ Twin synergy ก็จะเลือกใช้ MongoDB เป็นอันดับแรก เพราะ mongodb ก็คือ NoSQL โดยจุดเด่นของ NoSQL ส่วนใหญ่ (แต่ไม่ใช่ทุกอย่าง) คือความสามารถในการเขียนข้อมูลได้เร็วกว่า MySQL เป็นอย่างมาก หากงานที่เราทำนั้นเน้นการเขียนข้อมูลมากๆ เช่นต้องเก็บ Log แบบตลอดเวลาแบบ Real-time ทุกการกระทำ และข้อมูลมีขนาดใหญ่โตมาก การใช้งาน MongoDB ก็จะตอบโจทย์ได้เป็นอย่างดี

โดยหน้าที่ในทีมของผมก็จะเป็นคนเริ่มโปรเจ็คให้ก่อน โดยทำการเขียน docker-compose ให้สำหรับใช้งาน และสร้างฐานข้อมูลเริ่มต้นเพื่อให้ developer ไปพัฒนาต่อ มันก็จะมีคำสั่งหลักๆ สำหรับการเริ่มใช้งานของ MongoDB ที่ผมจะใช้งานทุกครั้ง ดังนี้

1. สร้าง Admin user สำหรับ mongo

โดยปกติแล้วหากเริ่มใช้งาน mongo ครั้งแรกก็จะไม่มี user เลย ก็ให้เราทำการสร้าง admin user มาก่อนเลย

//ใช้งานฐานข้อมูลชื่อ admin
use admin 

var user = {
  "user" : "admin",
  "pwd" : "manager",
  roles : [
      {
          "role" : "userAdminAnyDatabase",
          "db" : "admin"
      }
  ]
}

db.createUser(user);

2. เริ่ม MongoDB ให้ใช้สิทธิ์แบบ Authen

เพื่อกำหนดให้ต้อง log in เข้าใช้งานทุกครั้ง โดยเราจะ start mongo ด้วยคำสั่งนี้

mongod --auth

หรือ กำหนดลงในไฟล์ mongod.conf หากไม่มีให้สร้างเอา /etc/mongod.conf

security:
  authorization: "enabled" #disabled,enabled

จากนั้น start mongo ด้วย

mongod -f /etc/mongod.conf

3. สร้าง Application user

เมื่อ mongodb ถูก start แล้วให้เข้า mongo ผ่านล็อกอินด้วยคำสั่ง

mongo admin -u admin -p

จากนั้นมันจะเข้ามาหน้า command line ของ mongo ทำการสร้าง user สำหรับใช้งานฐานข้อมูลของเรา

use ecommerce

var user = {
  "user" : "website",
  "pwd" : "abc123",
  roles : [
      {
          "role" : "readWrite",
          "db" : "ecommerce"
      }
  ]
}

db.createUser(user);

4. สร้าง Reporting user (Read only)

หากต้องให้มี user ไว้อ่านฐานข้อมูลอย่างเดียวก็สร้างได้เช่นกัน

use admin

var user = {
  "user" : "reporting",
  "pwd" : "abc123",
  roles : [
      {
          "role" : "readAnyDatabase",
          "db" : "admin"
      }
  ]
}

db.createUser(user);

หรือสร้างให้อ่านเฉพาะฐานข้อมูลนั้นๆ

use ecommerce

var user = {
  "user" : "reporting",
  "pwd" : "abc123",
  roles : [
      {
          "role" : "read",
          "db" : "ecommer"
      }
  ]
}

db.createUser(user);

5. สำรองฐานข้อมูล MongoDB

เมื่อใช้งาน MongoDB แล้วก็ควรสำรองข้อมูลมันไว้ด้วย

mongodump -h domain.com:27017 -u mongo_user -p mongo_pass -d mongo_dbname

6. Restore MongoDB

หากต้องการนำฐานข้อมูลกลับเข้าไป

mongorestore -d mongo_dbname folder_backup/

ซึ่งใน forder_backup จะมีไฟล์พวก .json และ .bson อยู่

ทั้งหมดที่กล่าวมาเป็น Mongo version 3 นะครับ สุดท้ายขอแนะนำ MongoDB client ไว้ใช้งานก็คือ https://robomongo.org/ มีครบทั้ง osx, ubuntu, windows

Happy mongodb :p

Thanks: http://tgrall.github.io/blog/2015/02/04/introduction-to-mongodb-security/

0

Add new comment