官網www.mongodb.com, 當前最新版3.4
C++編寫,基於分佈式的,屬於NoSQL的一種
在NoSQL中是最像關係型數據庫的
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔、數組及文檔數組。
關於JSON http://www.w3school.com.cn/json/index.asp
由於基於分佈式,因此很容易擴展
MongoDB和關係型數據庫對比
關係型數據庫數據結構mongodb
MongoDB數據結構shell
epel自帶的mongodb版本爲2.6,咱們須要安裝3.4版本
官方安裝文檔https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
cd /etc/yum.repos.d/
vim mongodb-org-3.4.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數據庫
systemctl start mongod //啓動服務
在本機能夠直接運行命令mongo進入到mongodb shell中
若是mongodb監聽端口並非默認的27017,則在鏈接的時候須要加--port 選項,例如
mongo --port 27018
鏈接遠程mongodb,須要加--host,例如
mongo --host 127.0.0.1
若是設置了驗證,則在鏈接的時候須要帶用戶名和密碼
mongo -uusername -ppasswd --authenticationDatabase db //這個和MySQL挺像json
use admin//須要切換到admin庫
db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin122", roles: [ { role: "root", db: "admin" } ] } )
user指定用戶,customData爲說明字段,能夠省略,pwd爲密碼,roles指定用戶的角色,db指定庫名
use admin //切換到admin庫
db.system.users.find() //列出全部用戶,須要切換到admin庫
show users //查看當前庫下全部的用戶
db.dropUser('admin') //刪除用戶
若要用戶生效,還須要編輯啓動腳本vim /usr/lib/systemd/system/mongod.service,在OPTIONS=後面增--auth
重啓服務systemctl restart mongod
mongo -u "admin" -p "admin122" --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庫進行身份驗證,直接訪問會提示驗證失敗。
use db2
db.auth("test1", "123aaa")vim
MongoDB用戶角色
Read:容許用戶讀取指定數據庫
readWrite:容許用戶讀寫指定數據庫
dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級帳號,超級權限數組
MongoDB庫管理
db.version() //查看版本
use userdb //若是庫存在就切換,不存在就建立
show dbs //查看庫,此時userdb並無出現,這是由於該庫是空的,尚未任何集合,只須要建立一個集合就能看到了
db.createCollection('clo1') //建立集合clo1,在當前庫下面建立
db.dropDatabase() //刪除當前庫,要想刪除某個庫,必須切換到那個庫下
db.stats() //查看當前庫的信息
db.serverStatus() //查看mongodb服務器的狀態服務器