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 訪問許可權控制(6)Java訪問許可權
- public, private, protected 訪問許可權訪問許可權
- 17-成員訪問許可權訪問許可權
- 使用nginx控制ElasticSearch訪問許可權NginxElasticsearch訪問許可權
- 005.OpenShift訪問控制-許可權-角色
- mongodb 的許可權系統MongoDB
- win10老跳出訪問許可權怎麼辦_win10訪問許可權怎麼關閉Win10訪問許可權
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- Winner許可權管理系統3.0
- 如何在 Linux 中配置 sudo 訪問許可權Linux訪問許可權
- win共享檔案沒有許可權訪問怎麼辦 win10共享檔案許可權訪問的方法Win10
- 友好訪問許可權篇:訪問語音、相簿、通訊錄----iOS訪問許可權iOS
- 論Java訪問許可權控制的重要性Java訪問許可權
- postgresql關於訪問檢視需要的許可權SQL
- 採坑之Android手機訪問相簿許可權問題Android
- MongoDB入門系列(四):許可權管理MongoDB
- MongoDB 使用者與許可權管理MongoDB
- k8s結合jumpserver做kubectl許可權控制 使用者在多個namespaces的訪問許可權 rbac許可權控制K8SServernamespace訪問許可權
- Quarkus中基於角色的許可權訪問控制教程
- 淺析Windows的訪問許可權檢查機制Windows訪問許可權
- kubernetes實戰篇之Dashboard的訪問許可權限制訪問許可權
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- MySQL許可權問題MySql
- [BUG反饋]許可權管理 -> 訪問授權 點選後報錯
- mongoDB安裝時提示沒有許可權MongoDB
- ipv4和ipv6無網路訪問許可權 ipv4連線正常ipv6無網路訪問許可權訪問許可權
- ubuntu 開放root使用者的SSH訪問許可權Ubuntu訪問許可權
- Java入門筆記(六)——訪問許可權修飾符Java筆記訪問許可權
- java基礎(八)—–深入解析java四種訪問許可權Java訪問許可權
- java基礎(七) java四種訪問許可權深入解析Java訪問許可權
- 一文讀懂 TKE 及 Kubernetes 訪問許可權控制訪問許可權
- Centos sudo 許可權問題CentOS
- win10ipv6無網路訪問許可權怎麼辦_w10ipv6無網路訪問許可權的解決步驟Win10訪問許可權
- win10區域網你沒有許可權訪問怎麼辦 win10訪問區域網提示沒有許可權如何解決Win10
- Flask: WinError 10013 以一種訪問許可權不允許的方式做了一個訪問套接字的嘗試FlaskError訪問許可權
- 許可權之選單許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- mysql-v8.x設定許可權可以遠端訪問MySql