日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MONGODB 权限认证

發(fā)布時(shí)間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MONGODB 权限认证 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用mongoDB 是從2.4 版本開(kāi)始的,但那時(shí)的權(quán)限管理相對(duì)比較簡(jiǎn)單。也就沒(méi)有去弄這個(gè)。

現(xiàn)在再回頭看幾個(gè)版本的權(quán)限管理,看到各個(gè)版本間都在變化。

并且集群與單機(jī)也有很大的不同,

下面是以2.6版本來(lái)簡(jiǎn)單配置了一個(gè)環(huán)境進(jìn)行測(cè)試。

?

建立一個(gè)集群環(huán)境:



?? ?config={_id:'test1',members:[{_id:0,host:'192.168.2.113:27001',priority:10},{_id:1,host:'192.168.2.113:27002',priority:8}]}}
?? ? rs.initiate(config)

?? ?rs.addArb('192.168.2.113:27003')




配置兩個(gè)用戶(hù):


?? ?use admin
?? ?#數(shù)據(jù)庫(kù)管理員
?? ?db.createUser({user:'admin',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
?? ?#系統(tǒng)管理員
?? ?db.createUser({user:'root',pwd:'123',roles:[{role:'root',db:'admin'}]})

?? ?#test
?? ?use test;
?? ?db.createUser({user:'tang',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'root',db:'admin'}]});
?? ?db.createUser({user:'test',pwd:'123456',roles:[{role:'dbAdmin',db:'test'}]})

?? ?#建立一個(gè)test 只讀權(quán)限用戶(hù)
?? ?db.createUser({user:'readonly',pwd:'123456',roles:[{role:'read',db:'test'}]})



?? ?#生成對(duì) TEST 庫(kù)有讀寫(xiě)權(quán)限的用戶(hù)
?? ?db.createUser({user:'user',pwd:'123',roles:[{role:'readWrite',db:'test'},{role:'dbAdmin',db:'test'}]})


?? ?#生成一個(gè)對(duì)所有庫(kù)都有讀寫(xiě)的用戶(hù)
?? ?use admin;

?? ?db.createUser({user:'wang',pwd:'123',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

?

?



建立一個(gè)測(cè)試庫(kù)


?? ?use test

?? ?for (var i=1; i<=100; i++) {
?? ? mid=parseInt(i/100);
?? ? db.test.insert({_id:i,mid:mid,ts:new Date()});
?? ??? ? };
?

??? #論證

?? ?test1:PRIMARY>? use admin

?? ?test1:PRIMARY>? db.auth('wang','123')
?? ?1
?? ?test1:PRIMARY> use test
?? ?switched to db test
?? ?test1:PRIMARY> db.test.find()
?? ?{ "_id" : 1, "mid" : 0, "ts" : ISODate("2016-03-23T06:43:59.625Z") }
?? ?{ "_id" : 2, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.131Z") }
?? ?{ "_id" : 3, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.132Z") }

?? ?test1:PRIMARY> use MTEST
?? ?switched to db MTEST
?? ?test1:PRIMARY> show tables;
?? ?app
?? ?system.indexes
?? ?test1:PRIMARY> db.app.find()
?? ?{ "_id" : 1, "name" : "app test" }
?? ?test1:PRIMARY> show dbs;
?? ?Mtest? 0.078GB




?? ?登錄:
?? ?./mongo -port 27001 -u 'li' -p '123'? --authenticationDatabase test?? ?
?? ?
?? ?#登錄時(shí)加上認(rèn)證的數(shù)據(jù)庫(kù)名稱(chēng)如果是? *AnyDatabase 類(lèi)的role,那就是admin 了。




?? ?#python test code

?? ??? ?import pymongo
?? ??? ?import datetime

?? ??? ?#test read user
?? ??? ?test_conn = pymongo.MongoClient('mongodb://readonly:123456@192.168.2.113:27001/admin')
?? ??? ?test_db = test_conn.test

?? ??? ?test_db.test.update({"_id":1},{"$set":{"mid":9999}})
?? ??? ?#test_db.authenticate('li',password='123')
?? ??? ?cur_test = test_db.test.find().limit(10)
?? ??? ?for row in cur_test:
?? ??? ??? ?print 'id=%d,mid=%d'%(row["_id"],row['mid'])

?? ??? ?Mtest_db = test_conn.Mtest
?? ??? ?cur_app = Mtest_db.app.find()
?? ??? ?for row in cur_app:
?? ??? ??? ?print 'id=%d,name=%s'%(row["_id"],row['name'])
?? ??? ??? ?


?? ?#配置
?? ?
?? 1. #生成key 文件
?? ?[mongo@localhost ~]$ openssl rand -base64 741 > /home/mongo/.ssh/mongodb_key --文件內(nèi)容采base64編碼
?? ?[mongo@localhost ~]$chmod 600 /home/mongo/.ssh/mongodb_key


?? 2. 配置文件:(集群節(jié)點(diǎn)都加上)

?? ?[mongo@localhost bin]$ cat rep_p.conf
?? ?dbpath=/mnt/mongodb/data2/v2_p/
?? ?logpath=/mnt/mongodb/log/v2_plog.log
?? ?port=27001
?? ?logappend=true
?? ?fork=true
?? ?replSet=test1
?? ?oplogSize=100
?? ?auth=true
?? ?keyFile=/home/mongo/.ssh/mongodb_key

?

??? 3.#使用參數(shù)文件啟動(dòng)

??? ./mongod -f rep_p.conf

?

?

?? ?mongodb3.0 版本比 2.6 版本增加了dbOwner 角色。
?? ?而mongodb 3.2 版本,又增加了clusterManager,clusterMonitor,hostManager,Back ,restore 等一些管理角色。

?? ?這也說(shuō)明,mongodb的權(quán)限管理功能,一直在進(jìn)步。

?

( dbAdmin 角色是沒(méi)有讀寫(xiě)數(shù)據(jù)庫(kù)功能的,這點(diǎn)和其它的數(shù)據(jù)庫(kù)權(quán)限有些不同。)

?

總結(jié)

以上是生活随笔為你收集整理的MONGODB 权限认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。