天天看點

mongodb介紹、mongodb安裝、連接配接mongodb、mongodb使用者管理一:mongodb介紹二:mongodb安裝三:連接配接mongodb四:mongodb使用者管理

官網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安裝、連接配接mongodb、mongodb使用者管理一:mongodb介紹二:mongodb安裝三:連接配接mongodb四:mongodb使用者管理

關系型資料庫資料結構

mongodb介紹、mongodb安裝、連接配接mongodb、mongodb使用者管理一:mongodb介紹二:mongodb安裝三:連接配接mongodb四:mongodb使用者管理

mongodb資料結構

mongodb介紹、mongodb安裝、連接配接mongodb、mongodb使用者管理一:mongodb介紹二: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-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挺像

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")

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伺服器的狀态