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

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

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

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

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

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

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

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

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

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

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

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

    d.10  MongoDB支持各種編程語言:RUBY、PYTHON、JAVA、C++、PHP、C#等多種語言并且MongoDB的安裝也非常簡單
    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
建立兩個目錄:
/u01/mongnodb/
/u01/mongodb/data/db
/u01/mongodb/logs

修改別名
vim /etc/hosts
127.0.0.1   bogon

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


二、MongoDB配置

MongoDB的啟動參數(shù),可以在命令行指定,也可以通過配置文件
./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)程方式啟動
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端口訪問
#nohttpinterface = true

#聲明這是一個集群分片
#shardsvr = true

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

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

#設(shè)置開啟簡單的rest API ,置后打開28017網(wǎng)頁端口
#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)入是不需要密碼的,也沒有任何用戶,通過shell命令可直接進(jìn)入,cd到mongodb目錄下的bin文件夾,執(zhí)行命令./mongo即可

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

2)使用/創(chuàng)建admin的庫。權(quán)限管理就要使用admin數(shù)據(jù)庫
> use admin      
switched to db admin
 
3)我第一次登陸時只有一個system.version表,system.users都沒有,沒關(guān)系可以建一個用戶就有了。
   system.user表,這張表是用來存放超級管理員的
> 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 沒有無敵用戶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)限方式再次開啟MongoDB,這里注意不要使用kill直接去殺掉mongodb進(jìn)程,(如果這樣做了,請去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)限方式啟動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ù)庫并進(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)建用戶,用戶都跟著庫走,
> use mydb
> db.createUser({user: "app",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})


7、使用創(chuàng)建的用戶root登錄進(jìn)行數(shù)據(jù)庫操作:
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)閉:

前臺運(yùn)行:(不以守護(hù)進(jìn)程方式啟動)

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

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

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

1、普通命令:

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

Mongodb啟動幫助
mongod --help





如果啟動時指定端口號了,不是默認(rèn)的27017, 連接時也必須指定端口
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



當(dāng)前標(biāo)題:MongoDB安裝配置及用戶權(quán)限
分享路徑:http://muchs.cn/article26/ipgejg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、電子商務(wù)、外貿(mào)建站、小程序開發(fā)、全網(wǎng)營銷推廣虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管