国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Mongodb3.x 權(quán)限控制

2019-11-06 06:33:26
字體:
供稿:網(wǎng)友
[plain] view plain copy<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);">MongoDB 3.2 配置 用戶認(rèn)證 和 角色總結(jié)</span>  

1安裝 MongoDB 3.2

官網(wǎng)上詳細(xì)的流程走走就ok

https://docs.mongodb.com/master/tutorial/install-mongodb-on-Ubuntu

2MongoDB 如果不配置登陸的情況是等于游客也是超級管理員的,但默認(rèn)不支持外鏈接的

3基本的角色 

userAdminAnyDatabase 這個角色擁有分配角色和用戶的權(quán)限,但沒有查寫的缺陷
root  這是超級管理員
readWrite  有讀寫權(quán)限
read    有讀權(quán)限

[plain] view plain copyroot@iZ28ec5minyZ:~# mongo  MongoDB shell version: 3.2.6  connecting to: test  Server has startup warnings:   2016-06-04T18:43:48.721+0800 I CONTROL  [initandlisten]   2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.  2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'  2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten]   2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.  2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'  2016-06-04T18:43:48.722+0800 I CONTROL  [initandlisten]   > show dbs  local  0.000GB  >   

默認(rèn)mongo 進(jìn)入的 是 test  ,執(zhí)行 show dbs ,查看所有數(shù)據(jù)庫 我這新安裝的就 一個 local db

現(xiàn)在新建一個數(shù)據(jù)庫 admin 用來保存 新建的userAdminAnyDatabase角色 用戶(這個相當(dāng)于人事部長啊)

[plain] view plain copy> use admin  switched to db admin  > db  admin  有一個要注意的是我在那個數(shù)據(jù)庫創(chuàng)建的用戶就保存在哪個數(shù)據(jù)庫,像我現(xiàn)在在 db 輸出 admin,那我的用戶就保存在admin 數(shù)據(jù)庫。

創(chuàng)建人事部管理員 master

[html] view plain copy> db.createUser({user:"master",pwd:"123456",roles:[{"role":"userAdminAnyDatabase","db":"admin"}]})  Successfully added user: {          "user" : "master",          "roles" : [                  {                          "role" : "userAdminAnyDatabase",                          "db" : "admin"                  }          ]  }  > show dbs  admin  0.000GB  local  0.000GB  >   

4配置mongodb

配置前先關(guān)閉mongodb

執(zhí)行   service mongod stop (ubuntu 等系統(tǒng)) 沒有service 的系統(tǒng)如(Mac)執(zhí)行 killall mongod

進(jìn)入配置文件

(ubuntu 為例子)  vi /etc/mongod.conf

修改 bindip : 0.0.0.0

允許所有IP鏈接,外鏈

5 認(rèn)證模式開啟

[plain] view plain copymongod -f /etc/mongod.conf --fork --auth  -f 是使用的配置文件  (--config)也可以

-fork 是 后臺服務(wù)運(yùn)行

-auth 必須認(rèn)證才能操作

6登陸到mongodb

[plain] view plain copyroot@iZ28ec5minyZ:/var/lib# mongo  MongoDB shell version: 3.2.6  connecting to: test  > show dbs  2016-06-04T20:29:20.205+0800 E QUERY    [thread1] Error: listDatabases failed:{          "ok" : 0,          "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",          "code" : 13  } :  _getErrorWithCode@src/mongo/shell/utils.js:25:13  Mongo.PRototype.getDBs@src/mongo/shell/mongo.js:62:1  shellHelper.show@src/mongo/shell/utils.js:760:19  shellHelper@src/mongo/shell/utils.js:650:15  @(shellhelp2):1:1    >   現(xiàn)在沒有權(quán)限了執(zhí)行任何操作了,當(dāng)然你能進(jìn)入 終端

登陸

[plain] view plain copy> use admin  switched to db admin  > db.auth("master","123456")  1  >   

這里面要注意的是你在那注冊用戶的要去那個db里認(rèn)證,就像我是testdb數(shù)據(jù)庫createUser的,那我先要use testdb

在去db.auth("userName","passWord")

現(xiàn)在去創(chuàng)建用戶了

[plain] view plain copy> db.auth("master","123456")  1  > db.createUser({user:"jimb55",pwd:"123456",roles:[{"role":"readWrite","db":"jimb55db"}]})  Successfully added user: {          "user" : "jimb55",          "roles" : [                  {                          "role" : "readWrite",                          "db" : "jimb55db"                  }          ]  }  >   jimb55db 是我之前創(chuàng)建的一個db,現(xiàn)在我用master給這個db新建了用戶jimb55 role是 readWrite(讀寫權(quán)限)

db 作用的表(這個不是保存用戶和用戶認(rèn)證的表,當(dāng)前的表時admin,jimb55被保存到admin,下次登陸也是在admin登陸,當(dāng)然你可以 use jimb55db 轉(zhuǎn)換到 jimb55db 后再運(yùn)行 db.createUser({...}) ,那么下次就可以再jimb55db登陸也沒問題)

現(xiàn)在創(chuàng)建成功,看看有認(rèn)證看看

exit 退出終端 再次 mongo 進(jìn)入終端

[plain] view plain copy> use jimb55db  switched to db jimb55db  > db.auth("jimb55","123456")  Error: Authentication failed.  0  > use admin  switched to db admin  > db.auth("jimb55","123456")  1  看,你在jimb55db 認(rèn)證失敗了吧

現(xiàn)在看看對 jimb55db 的讀寫操作

[plain] view plain copy> use jimb55db  switched to db jimb55db  > db  jimb55db  > db.jimb55test.find()  { "_id" : ObjectId("5752cb4cba5ab543f74727a5"), "name" : "jimb55" }  > db.jimb55test.insert({name:"jimb55 bTyh"})  WriteResult({ "nInserted" : 1 })  > db.jimb55test.find()  { "_id" : ObjectId("5752cb4cba5ab543f74727a5"), "name" : "jimb55" }  { "_id" : ObjectId("5752cdea305e84a053d6cc83"), "name" : "jimb55 bTyh" }  >   沒有問題了吧。當(dāng)然我們要做到像MySQL那樣遠(yuǎn)程鏈接操作并且有個可視化的界面

我現(xiàn)在用的是 robomongo,隨便百度一下下載一個

但填寫資料后發(fā)現(xiàn)

認(rèn)證失敗,要注意的是 robomongo 等認(rèn)證不過,那是mongodb 版本錯了,這里要執(zhí)行命令校正mongodb、版本

先退出 mongod 服務(wù)

killall mongod 

再在無認(rèn)證情況下打開 mongod

mongod -f /etc/mongod.conf --fork

進(jìn)入終端:mongo

[plain] view plain copy> use admin  switched to db admin  > db.dropUser("jimb55")  true  > db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })  > db.createUser({user:"jimb55",pwd:"123456",roles:[{"role":"readWrite","db":"jimb55db"}]})  Successfully added user: {          "user" : "jimb55",          "roles" : [                  {                          "role" : "readWrite",                          "db" : "jimb55db"                  }          ]  }  >   換成版本3了,進(jìn)入admin 刪除用戶,更改版本version號碼,再重新創(chuàng)建用戶

退出mongo ,killall mongod  ,再在認(rèn)證模式打開mongod

mongod -f /etc/mongod.conf --fork --auth

現(xiàn)在再進(jìn)入 robomongodb 看看


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马龙县| 昌乐县| 台湾省| 孙吴县| 准格尔旗| 河东区| 鹤山市| 桃江县| 平塘县| 大悟县| 宿迁市| 吴堡县| 郸城县| 乐都县| 丰城市| 治县。| 江油市| 杭锦旗| 张家界市| 东城区| 温州市| 二连浩特市| 旺苍县| 宜章县| 金寨县| 海伦市| 南投县| 长武县| 临泽县| 平果县| 班玛县| 滨州市| 兰溪市| 台山市| 高雄县| 稷山县| 正镶白旗| 包头市| 白朗县| 凤山县| 铜山县|