mongodb安裝、連線,mongodb使用者管理、建立集合、資料管理、備份恢復,副本集介紹、搭建、測試,分片介紹、搭建、測試,php的mongodb擴充套件、mongo擴充套件
21.26 mongodb介紹
21.27 mongodb安裝
21.28 連線mongodb
21.29 mongodb使用者管理
21.30 mongodb建立集合、資料管理
21.31 php的mongodb擴充套件
21.32 php的mongo擴充套件
21.33 mongodb副本集介紹
21.34 mongodb副本集搭建
21.35 mongodb副本集測試
21.36 mongodb分片介紹
21.37/21.38/21.39 mongodb分片搭建
21.40 mongodb分片測試
21.41 mongodb備份恢復
擴充套件內容
mongodb安全設定 http://www.mongoing.com/archives/631
mongodb執行js指令碼 http://www.jianshu.com/p/6bd8934bd1ca
一、mongodb介紹
官網www.mongodb.com C++編寫,基於分散式的,屬於NoSQL的一種,文件型的資料庫 在NoSQL中mongodb是最像關係型資料庫的 MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件、陣列及文件陣列。 因為基於分散式,所以很容易擴充套件 關於JSON http://www.w3school.com.cn/json/index.asp JSON:JavaScript 物件表示法(JavaScript Object Notation)。 JSON 是儲存和交換文字資訊的語法。類似 XML。 JSON 比 XML 更小、更快,更易解析。
MongoDB和關係型資料庫對比
關係型資料庫資料結構
MongoDB資料結構
二、MongoDB安裝
epel自帶的mongodb版本為2.6,我們需要安裝3.4版本
官方安裝文件可參考: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
cd /etc/yum.repos.d/ vim mongodb.repo //建立,並加入如下內容 [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc yum list |grep mongodb //可以看到mongodb相關的rpm包 yum install -y mongodb-org
三、MongoDB連線
配置檔案 : vim /etc/mongod.conf
繫結多個ip,用逗號分隔
systemctl start mongod //啟動服務
在本機可以直接執行命令mongo進入到mongodb shell中
如果mongodb監聽埠並不是預設的27017,則在連線的時候需要加--port 選項,例如
mongo --port 27018
連線遠端mongodb,需要加--host,例如
mongo --host 127.0.0.1
如果設定了驗證,則在連線的時候需要帶使用者名稱和密碼
mongo -uusername -ppasswd --authenticationDatabase 資料庫名 //這個和MySQL挺像
四、MongoDB使用者管理
給使用者設定密碼:
use admin //需要切換到admin庫 db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin123", roles: [ { role: "root", db: "admin" } ] } ) user指定使用者,customData為說明欄位,可以省略,pwd為密碼,roles指定使用者的角色,db指定庫名
use admin //切換到admin庫 db.system.users.find() //列出所有使用者,需要切換到admin庫 show users //檢視當前庫下所有的使用者
在建立一個使用者: db.createUser({user:"tobe",pwd:"123456",roles:[{role:"read",db:"testdb"}]}) db.dropUser('tobe') //刪除使用者
use 庫名 切換到指定庫,如果庫不存在,會建立該庫
使用使用者名稱和密碼登陸,還需要編輯啟動指令碼: vim /usr/lib/systemd/system/mongod.service,在OPTIONS=後面增--auth
systemctl daemon-reload 重啟服務 systemctl restart mongod
此時不使用使用者名稱密碼登陸會報錯,沒有授權
登陸後即可:
mongo --host 192.168.183.3 --port 27017 -u admin -p 'admin123' --authenticationDatabase "admin"
use db1 db.createUser( { user: "test1", pwd: "123aaa", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } ) test1使用者對db1庫讀寫,對db2庫只讀。 之所以先use db1,表示使用者在 db1 庫中建立,就一定要db1庫驗證身份,即使用者的資訊跟隨隨資料庫。比如上述 test1雖然有 db2 庫的讀取許可權,但是一定要先在db1庫進行身份驗證,直接訪問會提示驗證失敗。 此時驗證身份報錯,是因為test1使用者是db1中的,要到db1中才可以
MongoDB使用者角色
Read:允許使用者讀取指定資料庫 readWrite:允許使用者讀寫指定資料庫 dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者 clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。 readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權 readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權 userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權 dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。 root:只在admin資料庫中可用。超級賬號,超級許可權
五、mongodb建立集合、資料