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 數據、日誌及配置文件默認存放路徑
- 數據默認存放路徑:
/var/lib/mongodb
- 日誌默認存放路徑:
/var/log/mongodb
- 配置文件默認存放路徑:
/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 |