mongodb主從使用者許可權管理
阿新 • • 發佈:2018-12-30
1、建立mongo的管理使用者
#mongo
>use admin
>db.createUser({user:"mongodbuser",pwd:"mongo123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) //此使用者只對使用者管理有許可權。對其他資料庫無操作許可權
2、關閉mongo,在mongo啟動指令碼後加上引數--auth
重啟mongo
3、
#mongo
>show dbs
rs1:PRIMARY> show dbs //未認證無法檢視資料庫
2016-05-16T17:24:48.174+0800 E QUERY Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
}
at Error (<anonymous>)
at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
>use admin
>db.auth('mongodbuser','mongo123456')
>show dbs
admin 0.078GB
local 20.068GB
test 0.078GB
wechat 0.078GB
現在可以給相應的資料庫新增相應的使用者了
>use wechat
>db.createUser({user:"testr",pwd:"123456",roles:[{role:"read",db:"wechat"}]}) //給與使用者testr,在資料庫wechat中只讀得許可權
>db.createUser({user:"testrw",pwd:"123456",roles:[{role:"readWrite",db:"wechat"}]}) //給與使用者testrw,在資料庫wechat中只讀寫得許可權
要對每個資料庫都有讀寫許可權可以建立一下使用者,role為root的超級使用者
>db.createUser({user:"zwli",pwd:"$$lw123456",roles:[{role:"root",db:"admin"}]})
//test 指令碼
db.abc.insert({"a":"1","b":"2"})
db.artich.insert({"name":"1"})
db.artich.find()
如忘記密碼可去掉啟動命令後的--auth引數,重新啟動。這樣就不用使用者驗證了
刪除使用者:db.dropUsers("username")
獲取資料庫所有使用者許可權:db.getUsers()或show users
獲得某個使用者的許可權資訊: db.getUser("username")
建立角色: db.createRole()
更新角色: db.updateRole()
刪除角色: db.dropRole()
獲得某個角色資訊: db.getRole()
刪除所有使用者: db.dropAllUsers()
將一個角色賦予給使用者: db.grantRolesToUser()
撤銷某個使用者的某個角色許可權: db.revokeRolesFromUser()
更改密碼: db.changeUserPassword()
給mongo主從配置許可權管理 主從配置好後 進入主節點 use admin db.createUser({user:"mongomanagement",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) db.createUser({user:"mongomonitor",pwd:"123456",roles:[{role:"clusterMonitor",db:"admin"}]}) db.grantRolesToUser("mongomanagement",[{role:"readWriteAnyDatabase",db:'admin'}]) db.grantRolesToUser("mongomanagement",[{role:"root",db:'admin'}]) 關閉mongo主從服務,生成mongo驗證檔案 openssl rand -base64 741 > mongodb-keyfile 許可權設定成600 chmod 600 mongodb-keyfile 然後啟動命令加上--auth --KeyFile mongodb-keyfile 命令為 /home/apps/mongodb/bin/mongod --config /home/apps/mongodb/master.conf --httpinterface --rest --auth --keyFile /home/apps/mongodb/mongodb-keyfile
給mongo主從配置許可權管理 主從配置好後 進入主節點 use admin db.createUser({user:"mongomanagement",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) db.createUser({user:"mongomonitor",pwd:"123456",roles:[{role:"clusterMonitor",db:"admin"}]}) db.grantRolesToUser("mongomanagement",[{role:"readWriteAnyDatabase",db:'admin'}]) db.grantRolesToUser("mongomanagement",[{role:"root",db:'admin'}]) 關閉mongo主從服務,生成mongo驗證檔案 openssl rand -base64 741 > mongodb-keyfile 許可權設定成600 chmod 600 mongodb-keyfile 然後啟動命令加上--auth --KeyFile mongodb-keyfile 命令為 /home/apps/mongodb/bin/mongod --config /home/apps/mongodb/master.conf --httpinterface --rest --auth --keyFile /home/apps/mongodb/mongodb-keyfile