標籤:

MongoDB 使用系列(一)-- 安裝

環境

  • 系統:Ubuntu 16.04
  • MongoDB 版本:3.6

安裝

添加軟體源

1.添加 MongoDB 簽名到 APT

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

2.創建/etc/apt/sources.list.d/mongodb-org-3.6.list文件並寫入命令

Ubuntu 14.04

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

Ubuntu 16.04

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

由於官方鏡像下載速度過慢可採用國內鏡像進行安裝:

Ubuntu 14.04

echo "deb http://mirrors.aliyun.com/mongodb/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

Ubuntu 16.04

echo "deb http://mirrors.aliyun.com/mongodb/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

更新軟體源列表

$ sudo apt-get update

安裝 MongoDB

$ sudo apt-get install -y mongodb-org

運行 MongoDB

1.啟動 MongoDB

sudo service mongod start

2.通過日誌確認 MongoDB 啟動成功

$ tail -10f /var/log/mongodb/mongod.log

看到下列內容則為啟動成功

[initandlisten] waiting for connections on port 27017

3.關閉 MongoDB

$ sudo service mongod stop

4.重啟 MongoDB

$ sudo service mongod restart

5.查看 MongoDB 狀態

$ sudo service mongod status

MongoDB 數據、日誌及配置文件默認存放路徑

  1. 數據默認存放路徑:/var/lib/mongodb
  2. 日誌默認存放路徑:/var/log/mongodb
  3. 配置文件默認存放路徑: /etc/mongod.conf

用戶許可權設置

添加管理員賬號

$ mongoMongoDB shell version v3.6.2connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.6.2> use admin > db.createUser( { user: "admin", pwd: "mongodb123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]}

在配置文件中開啟許可權驗證

$ sudo vim /etc/mongod.conf

在配置文件中加入:

security: authorization: enabled

重啟 MongoDB 服務

$ sudo service mongod restart

驗證許可權是否生效

$ mongoMongoDB shell version v3.6.2connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.6.2> show dbs2018-02-01T14:39:46.976+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0, $db: "admin" }", "code" : 13, "codeName" : "Unauthorized"} :_getErrorWithCode@src/mongo/shell/utils.js:25:13Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1shellHelper.show@src/mongo/shell/utils.js:813:19shellHelper@src/mongo/shell/utils.js:703:15@(shellhelp2):1:1> use adminswitched to db admin> db.auth(admin, mongodb123456)1> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB

添加普通用戶

> use spidersswitched to db spiders> db.createUser(... {... user: "spiders",... pwd: "spiders@2018",... roles: [{ role: "readWrite", db: "spiders" }]... }... )Successfully added user: { "user" : "spiders", "roles" : [ { "role" : "readWrite", "db" : "spiders" } ]}

成功添加一個普通用戶:

  • 用戶名:spiders
  • 密碼:spiders@2018
  • 許可權:讀寫 spiders 資料庫

內建角色

1.角色介紹

  • 資料庫用戶角色:read、readWrite
  • 資料庫管理角色:dbAdmin、dbOwner、userAdmin
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  • 備份恢復角色:backup、restore
  • 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超級用戶角色:root // 這裡還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
  • 內部角色:__system

2.角色說明

  • Read:允許用戶讀取指定資料庫
  • readWrite:允許用戶讀寫指定資料庫
  • dbAdmin:允許用戶在指定資料庫中執行管理函數,如索引創建、刪除,查看統計或訪問 system.profile
  • userAdmin:允許用戶向 system.users 集合寫入,可以找指定資料庫里創建、刪除和管理用戶
  • clusterAdmin:只在 admin 資料庫中可用,賦予用戶所有分片和複製集相關函數的管理許可權
  • readAnyDatabase:只在 admin 資料庫中可用,賦予用戶所有資料庫的讀許可權
  • readWriteAnyDatabase:只在 admin 資料庫中可用,賦予用戶所有資料庫的讀寫許可權
  • userAdminAnyDatabase:只在 admin 資料庫中可用,賦予用戶所有資料庫的 userAdmin 許可權
  • dbAdminAnyDatabase:只在 admin 資料庫中可用,賦予用戶所有資料庫的 dbAdmin 許可權
  • root:只在 admin 資料庫中可用。超級賬號,超級許可權

參考

  • MongoDB 官方文檔
  • 如何對MongoDB 3.2.7進行用戶許可權管理配置

推薦閱讀:

一個大型的SNS網站,是否適合資料庫全部用mongodb來做,為什麼?
MongoDB集群均衡
mongodb 3.4 集群搭建:分片+副本集
MongoDB與EDI系統集成

TAG:MongoDB |