mongoDB 3.0 安全許可權訪問
為了兼用2.6版本,我直接指定下面的引數:
setParameter: authenticationMechanisms: MONGODB-CR
下面看看如何建立訪問控制許可權
不使用 —auth 引數,啟動 mongoDB
mongodb-linux-i686-3.0.0/bin/mongod -f mongodb-linux-i686-3.0.0/mongodb.conf
此時你 show dbs 會看到只有一個local資料庫,那個所謂的admin是不存在的。
mongoDB 沒有超級無敵使用者root,只有能管理使用者的使用者 userAdminAnyDatabase。
use admin db.createUser( { user: "buru", pwd: "12345678", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
roles 中的 db 引數是必須的,不然會報錯:Error: couldn’t add user: Missing expected field “db”。另外,有很多文章記錄的是使用 db.addUser(…) 方法,這個方法是舊版的,3.0中已經不存在,詳見:。
切換到admin下,檢視剛才建立的使用者:
show users 或 db.system.users.find() { "_id" : "admin.buru", "user" : "buru", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "gwVwuA/dXvxgSHavEnlyvA==", "storedKey" : "l2QEVTEujpkCuqDEKqfIWbSv4ms=", "serverKey" : "M1ofNKXg2sNCsFrBJbX4pXbSgvg=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
怎麼關閉 mongoDB?千萬不要 kill -9 pid,可以 kill -2 pid 或 db.shutdownServer()
下面使用 —auth 參 數,重新啟動 mongoDB:
mongodb-linux-i686-3.0.0/bin/mongod --auth -f mongodb-linux-i686-3.0.0/mongodb.conf mongodb-linux-i686-3.0.0/bin/mongo use admin db.auth("buru","12345678") #認證,返回1表示成功 或 mongodb-linux-i686-3.0.0/bin/mongo -u buru -p 12345678 --authenticationDatabase admin
此時 show collections 報錯
2015-03-17T10:15:56.011+0800 E QUERY Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on admin to execute command { listCollections: 1.0 }", "code" : 13 } at Error (<anonymous>) at DB._getCollectionInfosCommand (src/mongo/shell/db.js:643:15) at DB.getCollectionInfos (src/mongo/shell/db.js:655:20) at DB.getCollectionNames (src/mongo/shell/db.js:666:17) at shellHelper.show (src/mongo/shell/utils.js:625:12) at shellHelper (src/mongo/shell/utils.js:524:36) at (shellhelp2):1:1 at src/mongo/shell/db.js:643
因為,使用者buru只有使用者管理的許可權。
下面建立使用者,使用者都跟著庫走,建立的使用者都是
use tianhe db.createUser( { user: "bao", pwd: "12345678", roles: [ { role: "readWrite", db: "tianhe" }, { role: "read", db: "tianhe2" } ] } )
檢視剛剛建立的使用者。
show users { "_id" : "tianhe.bao", "user" : "bao", "db" : "tianhe", "roles" : [ { "role" : "readWrite", "db" : "tianhe" }, { "role" : "read", "db" : "tianhe2" } ] }
檢視整個mongoDB全部的使用者:
use admin db.system.users.find() { "_id" : "admin.buru", "user" : "buru", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "gwVwuA/dXvxgSHavEnlyvA==", "storedKey" : "l2QEVTEujpkCuqDEKqfIWbSv4ms=", "serverKey" : "M1ofNKXg2sNCsFrBJbX4pXbSgvg=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } { "_id" : "tianhe.bao", "user" : "bao", "db" : "tianhe", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "//xy1V1fbqEHC1gzQqZHGQ==", "storedKey" : "ZS/o54zzl/FdcXLQJ98KdAVTfF0=", "serverKey" : "iIpNYz2Gk8KhyK3zgz6muBt0PI4=" } }, "roles" : [ { "role" : "readWrite", "db" : "tianhe" }, { "role" : "read", "db" : "tianhe2" } ] }
建立完畢,驗證一下:
use buru show collections 2015-03-17T10:30:06.461+0800 E QUERY Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on buru to execute command { listCollections: 1.0 }", "code" : 13 } at Error (<anonymous>) at DB._getCollectionInfosCommand (src/mongo/shell/db.js:643:15) at DB.getCollectionInfos (src/mongo/shell/db.js:655:20) at DB.getCollectionNames (src/mongo/shell/db.js:666:17) at shellHelper.show (src/mongo/shell/utils.js:625:12) at shellHelper (src/mongo/shell/utils.js:524:36) at (shellhelp2):1:1 at src/mongo/shell/db.js:643
顯然沒許可權,先auth:
db.auth("bao","12345678") show collections news system.indexes wahaha
Mongo Shell:
Enable Access Control:
Add a User to a Database:
User Methods:
Role Methods: authentication:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2944612/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java的訪問許可權Java訪問許可權
- Java 訪問許可權控制(6)Java訪問許可權
- Swift4.0 訪問許可權Swift訪問許可權
- AndroidPermission訪問許可權大全Android訪問許可權
- public, private, protected 訪問許可權訪問許可權
- MongoDB 3.0.8 許可權管理MongoDB
- 使用nginx控制ElasticSearch訪問許可權NginxElasticsearch訪問許可權
- Think IN JAVA --------JAVA訪問許可權控制Java訪問許可權
- redis密碼設定、訪問許可權控制等安全設定Redis密碼訪問許可權
- android自定義訪問許可權permissionAndroid訪問許可權
- android:各種訪問許可權PermissionAndroid訪問許可權
- Java:談談protected訪問許可權薦Java訪問許可權
- mongodb 的許可權系統MongoDB
- win10老跳出訪問許可權怎麼辦_win10訪問許可權怎麼關閉Win10訪問許可權
- win7訪問xp您沒有許可權訪問 共享。請與網路管理員聯絡請求訪問許可權Win7訪問許可權
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- Winner許可權管理系統3.0
- Android7.0檔案訪問許可權Android訪問許可權
- SQLServer控制使用者訪問許可權表SQLServer訪問許可權
- win共享檔案沒有許可權訪問怎麼辦 win10共享檔案許可權訪問的方法Win10
- 友好訪問許可權篇:訪問語音、相簿、通訊錄----iOS訪問許可權iOS
- postgresql關於訪問檢視需要的許可權SQL
- 如何在 Linux 中配置 sudo 訪問許可權Linux訪問許可權
- 論Java訪問許可權控制的重要性Java訪問許可權
- 自定義Android應用的訪問許可權Android訪問許可權
- 呼叫者儲存過程訪問許可權問題儲存過程訪問許可權
- Swift 中 Selector 方法的訪問許可權控制問題Swift訪問許可權
- MongoDB 使用者與許可權管理MongoDB
- MongoDB入門系列(四):許可權管理MongoDB
- mongodb未授權訪問漏洞MongoDB
- Android安全—許可權模型Android模型
- MySQL許可權問題MySql
- 淺析Windows的訪問許可權檢查機制Windows訪問許可權
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- Weblogic 提示5個IP訪問許可權的限制Web訪問許可權
- Java 訪問許可權修飾符學習筆記Java訪問許可權筆記
- Quarkus中基於角色的許可權訪問控制教程
- 採坑之Android手機訪問相簿許可權問題Android