1. 程式人生 > >mongodb安裝、連線,mongodb使用者管理、建立集合、資料管理、備份恢復,副本集介紹、搭建、測試,分片介紹、搭建、測試,php的mongodb擴充套件、mongo擴充套件

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建立集合、資料