MongoDB使用者管理操作

2021-10-07 15:58:54 字數 4623 閱讀 3481

2.2、建立普通使用者

三、修改使用者

四、刪除使用者

mongodb中可以對使用者進行讀/寫許可權控制,主要有如下許可權型別

許可權型別(角色)

說明read

賦予使用者指定資料庫讀許可權

readwrite

賦予使用者指定資料庫讀寫許可權

dbadmin

賦予使用者在指定資料庫中執行管理函式許可權,如索引建立、刪除,檢視 統計或訪問 system.profile

useradmin

賦予使用者向 system.users 集合寫入許可權,可以在指定資料庫裡建立、刪 除和管理使用者

clusteradmin

賦予使用者所有分片和複製集相關函式的 管理許可權(admin庫中可用)

readanydatabase

賦予使用者所有資料庫的讀許可權(admin庫中可用)

readwriteanydatabase

賦予使用者所有資料庫的讀寫許可權(admin庫中可用)

useradminanydatabase

賦予使用者所有資料庫的 useradmin 許可權(admin庫中可用)

dbadminanydatabase

賦予使用者所有資料庫的 dbadmin 許可權(admin庫中可用)

root

超級管理員(admin庫中可用)

對應使用者管理員,通常只賦予使用者操作許可權,不授權db的讀寫許可權,所以授useradminanydatabase許可權即可。

管理員賬戶必須在admin庫下建立,而mongodb 3.0版本後沒有預設admin庫,需要先手動建立乙個。

啟動mongodb後,在bin目錄下執行./mongo命令,進入客戶端命令視窗。

2.1.1、建立admin庫

執行use admin

> use admin

switched to db admin

2.1.2、在admin庫建立使用者

執行db.createuser()可以建立使用者,下面是執行語句格式

user表示新建的使用者名稱

pwd表示使用者密碼

customdata表示存放一些使用者相關的自定義資料(可選)

roles是陣列型別,表示給使用者配置的許可權

db.

createuser(,

roles:[|

"",...]})

;

建立乙個使用者名為pandafox,密碼為123456的使用者管理員

> db.

createuser(]

})successfully added user:

]}

2.1.3、檢視使用者

執行db.system.users.find(),可以檢視到使用者相關資訊

> db.system.users.

find()

,"scram-sha-256":}

,"roles":[

]}

2.1.4、開啟使用者驗證

1)在mongodb.conf配置檔案中,增加auth啟動引數,並設定為true

[root@localhost etc]# cat mongodb.conf 

dbpath=

/usr/local/mongodb/data/db/

logpath=

/usr/local/mongodb/log/mongodb.log

port=

27017

fork=

true

auth=

true

2)重啟mongodb服務

2.1.5、效果驗證

1)切換到admin庫,未登入情況執行命令,提示無許可權,說明admin庫已經授權使用者成功

> use admin

switched to db admin

> db.system.users.

find()

error: error:

2)登入,使用db.auth('user','pwd'),返回1表示登入成功

> db.

auth

('pandafox'

,'123456'

)1

3)再次執行db.system.users.find()會返回對應使用者資訊

普通使用者需要由管理員建立並授權。所以,我們首先做的就是用管理員賬戶登入資料庫。

> use admin

switched to db admin

> db.

auth

('pandafox'

,'123456'

)1

2.2.1、建立test庫
> use test

switched to db test

2.2.2、建立testfox使用者

建立testfox使用者,密碼為123456,擁有test庫的讀寫許可權

> db.

createuser(]

})successfully added user:

]}

2.2.3、效果驗證

1)新開乙個客戶端,切換到test庫,並登入

> use test

switched to db test

> db.

auth

('testfox'

,'123456'

)1

2)可見讀寫是ok的

> db.test.

insert()

writeresult()

> db.test.

find()

3)如果不登入是無法操作的

> db.test.

insert()

writecommanderror

()

使用db.updateuser()函式進行修改

> db.

updateuser

("pandafox",,

]})> show users,]

,"mechanisms":[

"scram-sha-1"

,"scram-sha-256"

]}

1)使用db.updateuser()函式(有使用者管理許可權)

修改密碼

db.

updateuser

('pandafox'

,)

斷開連線,重新登入驗證

> use admin

switched to db admin

> db.

auth

('pandafox'

,'123456'

)error: authentication failed.

0> db.

auth

('pandafox'

,'654321'

)1

2)使用db.changeuserpassword()函式(有使用者管理許可權)

修改密碼

> db.

changeuserpassword

('pandafox'

,'123456'

)

斷開連線,重新登入驗證

> use admin

switched to db admin

> db.

auth

('pandafox'

,'654321'

)error: authentication failed.

0> db.

auth

('pandafox'

,'123456'

)1

使用db.dropuser()函式刪除使用者,成功則返回true

> use test

switched to db test

> db.

dropuser

('testfox'

)true

> show users

>

MongoDB 資料操作(十)使用者管理

在 mongodb 裡面預設情況下只要是進行連線都可以不使用使用者名稱與密碼 因為要想讓其起作用,則必須具備以下兩個條件,缺一不可 但是需要明確的是,如果要想配置使用者名稱和密碼一定是針對於乙個資料庫的,例如現在要建立的是oceanickang資料庫的使用者 那麼就必須首先切換到oceanickan...

MongoDB使用者管理

開啟mongodb服務時不新增任何引數時,預設是沒有許可權驗證的,登入的使用者可以對資料庫任意操作而且可以遠端訪問資料庫!在剛安裝完畢的時候mongodb都預設有乙個admin資料庫,此時admin資料庫是空的,沒有記錄許可權相關的資訊!當admin.system.users乙個使用者都沒有時,即使...

Mongodb使用者管理

使用者管理 預設不會驗證使用者名稱密碼。啟動時候新增 auth run with security 1.mongod auth 2.mongo無密碼登入到資料庫中。3.useadmin 切換到admin資料庫 4.db.adduser root 123 新增最高許可權使用者 5.db.auth ro...