1. 程式人生 > >MongoDB建立資料庫管理員賬號

MongoDB建立資料庫管理員賬號

啟動MongoDB服務時,在沒有指定--auth引數情況下,不需要任何驗證就可以對資料庫進行任意操作。為了安全,一般需要為資料庫建立相應的角色,為角色分配相應的許可權,在啟動MongoDB時指定--auth引數。

啟動MongoDB服務,進入MongoDB Shell控制檯,切換至admin資料庫,建立資料庫管理員使用者,其指令如下(以#開頭的為註釋說明,非輸入控制檯內容,每條指令以Enter鍵結束):

MongoDB建立資料庫管理員使用者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 切換至admin資料庫。 # 也可以使用db = db.getSiblingDB('admin')代替use admin。
use admin # 建立管理員使用者,並指定其許可權。 db.addUser({ user : 'root', pwd : '123456', roles : [ 'clusterAdmin', 'dbAdminAnyDatabase', 'userAdminAnyDatabase', 'readWriteAnyDatabase' ] })

關閉MongoDB服務,重啟MongoDB服務並加上--auth引數,進入MongoDB Shell控制檯,切換至admin資料庫,敲入show collections指令,此時系統報錯:error : {"$err" : "not authorized for query on admin.system.namespaces", "code" : 16550}。這是需要認證的緣故,在控制檯輸入如下指令進行認證:

MongoDB使用者認證
1 2 3 # 進行使用者認證,輸入上面建立的使用者名稱及密碼。 # 也可以使用db.auth('root', '123456')代替下面指令。 db.auth({user : 'root', pwd : '123456'})

認證通過後,重新敲入show collection指令,此時不再報錯,可以看到指令相應的輸出結果。

接下來,為指定資料庫建立一般使用者角色,用於程式讀取、修改資料庫。假如現有blog資料庫,要為其建立使用者名稱為admin、密碼為123456,擁有CRUD(增查改刪)許可權,指令如下:

MongoDB資料庫使用者建立
1 2 3 4 5 6 7 8 9 # 切換至blog資料庫。 use blog # 建立admin使用者。 db.addUser({ user : 'admin', pwd : '123456', roles : ['readWrite'] })

PHP連線至blog資料庫程式碼示例(PHP必須安裝MongoDB擴充套件,若想了解PHP如何安裝MongoDB擴充套件,請參閱:PHP使用MongoDB擴充套件):

PHP連線MongoDB
1 2 3 4 5 6 7 <?php $mongo = new MongoClient('mongodb://admin:[email protected]:27017/blog'); /** * 其他程式碼。 */ ?>

說明:不同MongoDB版本在建立資料庫使用者角色會存在細微的差別,本文使用的是MongoDB 2.4.4版本。若想了解更多MongoDB使用者許可權,請參閱MongoDB官方手冊:User Privilege Roles in MongoDB