溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MongoDB 安裝配置及用戶權(quán)限

發(fā)布時(shí)間:2020-08-08 09:39:01 來(lái)源:ITPUB博客 閱讀:190 作者:steven_hua 欄目:關(guān)系型數(shù)據(jù)庫(kù)

參考: http://www.runoob.com/mongodb/mongodb-linux-install.html

介紹:
  a MongoDB是由C++語(yǔ)言編寫的一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng),它的目的在于為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

  b MongoDB是一個(gè)介于關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系型數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,會(huì)將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值對(duì)(key=>value)組成,是類似于json的bson格式,字段值可以包含其它文檔、數(shù)組和文檔數(shù)組,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。

  c MongoDB最大的特點(diǎn)就是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系型數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。

  d MongoDB的主要特點(diǎn)(來(lái)自于網(wǎng)上,主要為了我們初步了解)

    d.1 MongoDB提供了一個(gè)面向文檔存儲(chǔ),操作起來(lái)比較簡(jiǎn)單和容易的非關(guān)系型數(shù)據(jù)庫(kù)。

    d.2 你可以在MongoDB記錄中設(shè)置任何屬性的索引來(lái)實(shí)現(xiàn)更快的排序。

    d.3 你可以通過(guò)本地u或者網(wǎng)絡(luò)創(chuàng)建數(shù)據(jù)鏡像,這使得MongoDB含有更強(qiáng)的擴(kuò)展性。

    d.4 如果負(fù)載的增加(需要更多的存儲(chǔ)空間和更強(qiáng)的處理能力),它可以分布在計(jì)算機(jī)網(wǎng)絡(luò)中的其它節(jié)點(diǎn)上,這就是所謂的分片。

    d.5 MongoDB支持豐富的查詢表達(dá)式,查詢指令使用JSON形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對(duì)象和數(shù)組。        d.6 MongoDB使用update()命令可以實(shí)現(xiàn)替換完成的文檔(數(shù)據(jù))或者一些指定的數(shù)據(jù)字段。        d.7 MongoDB中的Map/Reduce主要是用來(lái)對(duì)數(shù)據(jù)進(jìn)行批量處理和聚合操作,Map函數(shù)調(diào)用emit(key,value)遍歷集合中所有的記錄,將key于value傳遞給Reduce函數(shù)進(jìn)行處理。另外Map函數(shù)和Reduce函數(shù)是使用JavaScript編寫的,所以可以通過(guò)db.runCommand和mapreduce命令來(lái)執(zhí)行MapReduce操作。        d.8 GridFS是MongoDB中的一個(gè)內(nèi)置功能,可以用于存放大量小文件。

    d.9 MongoDB允許在服務(wù)端執(zhí)行腳本,可以用JavaScript編寫某個(gè)函數(shù),直接在服務(wù)端執(zhí)行,也可以吧函數(shù)的定義存儲(chǔ)在服務(wù)端,下次直接調(diào)用即可。

    d.10  MongoDB支持各種編程語(yǔ)言:RUBY、PYTHON、JAVA、C++、PHP、C#等多種語(yǔ)言并且MongoDB的安裝也非常簡(jiǎn)單
    f MongoDB官網(wǎng):http://www.mongodb.org/

  g MongoDB學(xué)習(xí)網(wǎng)站:http://www.runoob.com/mongodb

一、MongoDB的安裝
下載社區(qū)版
https://www.mongodb.com/download-center#community

tar -zxvf mongodb-linux-x86_64-3.2.8.tgz
建立兩個(gè)目錄:
/u01/mongnodb/
/u01/mongodb/data/db
/u01/mongodb/logs

修改別名
vim /etc/hosts
127.0.0.1   bogon

啟動(dòng)
./bin/mongod --dbpath /u01/mongodb/data/db
輸入命令lsof -i :27017,監(jiān)測(cè)端口已經(jīng)在使用中,所以說(shuō)啟動(dòng)已經(jīng)完成。


二、MongoDB配置

MongoDB的啟動(dòng)參數(shù),可以在命令行指定,也可以通過(guò)配置文件
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf



cat /u01/mongnodb/mongno.conf
#Data file Path
#dbpath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/bin/mongod --dbpat
dbpath = /u01/mongodb/data/db

#Log file path
logpath = /u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/logs/mongodb.log
logAppend=true

#綁定IP
#bind_ip=127.0.0.1

#port
port = 27017

# 以守護(hù)進(jìn)程方式啟動(dòng)
fork = true

#日志輸出方式,使用追加的方式寫日志
logappend = true

#PID File
pidfilepath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/mongodb.pid

#關(guān)閉http接口,默認(rèn)關(guān)閉27018端口訪問(wèn)
#nohttpinterface = true

#聲明這是一個(gè)集群分片
#shardsvr = true

#設(shè)置每個(gè)數(shù)據(jù)庫(kù)將被保存在一個(gè)單獨(dú)的目錄
#directoryperdb=true

#開(kāi)啟認(rèn)證
#auth = true

#設(shè)置開(kāi)啟簡(jiǎn)單的rest API ,置后打開(kāi)28017網(wǎng)頁(yè)端口
#rest = true

##分片配置
sharding:
##指定config server
 configDB: 10.96.29.2:29017,10.96.29.2:29018,10.96.29.2:29019

三、MongoDB用戶授權(quán)和管理

1、mongodb安裝好后第一次進(jìn)入是不需要密碼的,也沒(méi)有任何用戶,通過(guò)shell命令可直接進(jìn)入,cd到mongodb目錄下的bin文件夾,執(zhí)行命令./mongo即可

# ./bin/mongo
1)顯示數(shù)據(jù)庫(kù)
> show dbs
admin  0.000GB
local  0.000GB

2)使用/創(chuàng)建admin的庫(kù)。權(quán)限管理就要使用admin數(shù)據(jù)庫(kù)
> use admin      
switched to db admin
 
3)我第一次登陸時(shí)只有一個(gè)system.version表,system.users都沒(méi)有,沒(méi)關(guān)系可以建一個(gè)用戶就有了。
   system.user表,這張表是用來(lái)存放超級(jí)管理員的
> show collections
system.users
system.version

4)查詢system.user表中含有數(shù)據(jù)否
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Fyaf2IGrGbC+kDyTZpe/tg==", "storedKey" : "Um7slisABOWPosz8h0XsxV18b68=", "serverKey" : "AwpUC8YlyvpGnncuxUaYzHKEkuw=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
{ "_id" : "svideo.vdb", "user" : "vdb", "db" : "svideo", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "C8xTDX0YZqOxybT/2lkvgw==", "storedKey" : "9Vty4qpDso2F5793zIOoscobefk=", "serverKey" : "q8d+EwCuQcCLeTTGIAHC3djnKmw=" } }, "roles" : [ { "role" : "dbOwner", "db" : "svideo" } ] }



2、添加管理用戶(mongoDB 沒(méi)有無(wú)敵用戶root,只有能管理用戶的用戶 userAdminAnyDatabase),


db.createUser({
    user:'admin',
    pwd:'123456',
    roles:[
    {role:'userAdminAnyDatabase',db:'admin'},
    {role:'dbAdminAnyDatabase',db:'admin'},
    {role:'clusterMonitor',db:'admin'}
    ]
})

use mydb
db.createUser({
    user:'vdb',
    pwd:'123456',
   roles:[{role:'dbOwner',db:'svideo'}]
})

角色:
userAdminAnyDatabase
dbOwner
readWrite

3、添加完管理用戶后,關(guān)閉MongoDB,并使用權(quán)限方式再次開(kāi)啟MongoDB,這里注意不要使用kill直接去殺掉mongodb進(jìn)程,(如果這樣做了,請(qǐng)去data/db目錄下刪除mongo.lock文件),可以使用db.shutdownServer()關(guān)閉

> db.shutdownServer()
2017-09-15T21:23:01.223+0800 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2017-09-15T21:23:01.223+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-09-15T21:23:01.223+0800 I NETWORK  [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
server should be down...


4、添加好用戶后,就可以使用權(quán)限方式啟動(dòng)MongoDB
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf
在mongno.conf指定參數(shù)  auth = true


5、進(jìn)入mongo shell,使用admin數(shù)據(jù)庫(kù)并進(jìn)行驗(yàn)證,如果不驗(yàn)證,是做不了任何操作的。

> use admin
> db.auth("admin","123456")   #認(rèn)證,返回1表示成功

6、驗(yàn)證之后還是做不了操作,因?yàn)閍dmin只有用戶管理權(quán)限,下面創(chuàng)建用戶,用戶都跟著庫(kù)走,
> use mydb
> db.createUser({user: "app",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})


7、使用創(chuàng)建的用戶root登錄進(jìn)行數(shù)據(jù)庫(kù)操作:
mongo 127.0.0.1/mydb -uapp -p
mongo 127.0.0.1/mydb -uvdb -p
或者使用:
./mongo -u username -p password --port port --authenticationDatabase databaseName
./mongo databaseName -u username -p password --port port
然后就可以進(jìn)行增刪改查各種數(shù)據(jù)操作…

Mongodb的關(guān)閉:

前臺(tái)運(yùn)行:(不以守護(hù)進(jìn)程方式啟動(dòng))

如果沒(méi)有使用--fork,直接可以前臺(tái)退出終端關(guān)閉。通過(guò)這種方式,Mongodb將會(huì)自己做清理退出,把沒(méi)有寫好的數(shù)據(jù)寫完成,并最終關(guān)閉數(shù)據(jù)文件。要注意的是這個(gè)過(guò)程會(huì)持續(xù)到所有操作都完成。

后臺(tái)運(yùn)行:(以守護(hù)進(jìn)程方式啟動(dòng) fork = true)

如果使用--fork在后臺(tái)運(yùn)行mongdb服務(wù),那么就要通過(guò)向服務(wù)器發(fā)送shutdownServer()消息來(lái)關(guān)閉。

1、普通命令:

$ ./mongod
> use admin
> db.shutdownServer()

Mongodb啟動(dòng)幫助
mongod --help





如果啟動(dòng)時(shí)指定端口號(hào)了,不是默認(rèn)的27017, 連接時(shí)也必須指定端口
mongo 127.0.0.1:27019

參考:
http://www.runoob.com/mongodb/mongodb-linux-install.html

MongoDB Authentication slow my TPS?
http://www.mongoing.com/archives/4623



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI