您好,登錄后才能下訂單哦!
一、創(chuàng)建管理員賬號(hào)
下面開(kāi)始創(chuàng)建一個(gè)帳號(hào),該賬號(hào)需要有grant權(quán)限,即:賬號(hào)管理的授權(quán)權(quán)限。注意一點(diǎn),帳號(hào)是跟著庫(kù)走的,所以在指定庫(kù)里授權(quán),必須也在指定庫(kù)里驗(yàn)證(auth)。
> use admin switched to db admin > db.createUser( { user: "dba", pwd: "dba", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) |
2.編輯mongodb配置文件,開(kāi)啟驗(yàn)證模塊
security: authorization: enabled |
3.重啟mongod.
4.再次登錄mongodb
#mongo > show dbs 2017-01-10T19:30:30.924+0800 E QUERY [main] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13, "codeName" : "Unauthorized" } |
5.會(huì)報(bào)出如上錯(cuò)誤,這是因?yàn)殚_(kāi)啟auth模塊后,需要進(jìn)行驗(yàn)證。如果需要使用剛才創(chuàng)建的管理員賬戶,則需要到admin庫(kù)下進(jìn)行驗(yàn)證,1表示驗(yàn)證成功。
>use admin >db.auth('dba','dba') 1 |
6.驗(yàn)證成功,再次執(zhí)行命令:
> show dbs admin 0.000GB local 0.000GB |
即可執(zhí)行成功。
二、創(chuàng)建普通用戶賬號(hào)
userAdminAnyDatabase的角色具有在任何數(shù)據(jù)庫(kù)下創(chuàng)建用戶的權(quán)限,下面用剛剛創(chuàng)建的dba用戶創(chuàng)建普通用戶。
1.創(chuàng)建只讀賬號(hào)
use db1 db.createUser( { user: "test1", pwd: "test1", roles: [ { role: "read", db: "db1" } ] } ) |
2.創(chuàng)建讀寫賬號(hào)
use db1 db.createUser( { user: "test2", pwd: "test2", roles: [ { role: "readWrite", db: "db1" } ] } ) |
注意:只有在當(dāng)前庫(kù)下創(chuàng)建的用戶才能在當(dāng)前庫(kù)下進(jìn)行驗(yàn)證,如果在admin庫(kù)下創(chuàng)建的其他庫(kù)的用戶則需要在admin下進(jìn)行驗(yàn)證。
三、創(chuàng)建超級(jí)管理員用戶
MongoDB在V3.0版本之后內(nèi)置了root 角色,也就是結(jié)合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4個(gè)角色權(quán)限,類似于ORACLE的sysdba角色,但是MongoDB的超級(jí)管理員用戶名稱是可以隨便定義的。當(dāng)然如此高權(quán)限的用戶還是不建議使用。
db.createUser( { user: "dbroot", pwd: "dbroot", roles: [ { role: "root", db: "admin" } ] } ) |
四、查看用戶信息
db.getUser("test1")
> db.getUser("test1") { "_id" : "admin.test1", "user" : "test1", "db" : "admin", "roles" : [ { "role" : "clusterAdmin", "db" : "admin" } ] } |
五、修改用戶信息
可修改用戶的如下信息:
角色、密碼、customData
db.updateUser( "test1", { customData:{employeeID:"0x3039"}, roles:[ {role:"read",db:"admin"} ], pwd:"test1password" } ) |
六、修改用戶密碼
db.changeUserPassword("user","password")
七、刪除用戶
db.system.users.remove({user:"user1"});
db.dropUser("test1")
八、授權(quán)給用戶
原有權(quán)限不變的情況下,授予readWrite,read admin的權(quán)限:
db.grantRolesToUser( "test1", [ "readWrite", { role: "read", db: "admin" } ] ) |
九、回收權(quán)限
回收test1用戶的readWrite和read admin的權(quán)限。
db.revokeRolesFromUser( "test1", [ { role: "read", db: "admin" }, "readWrite" ] ) |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。