1. 程式人生 > >Linux下mongodb使用者管理和設定遠端登陸

Linux下mongodb使用者管理和設定遠端登陸

折騰了下linux伺服器上的mongodb的遠端登陸,遇到了點問題,在這裡記錄下來。以備以後查詢。


前提:已經在linux上安裝好了mongodb。安裝方法這裡不說了,網上各種有。
本地用到的工具(windows):mongoChef(一個視覺化操作工具,可以用於3.xx版本,romongo不行)

首先vim /etc/mongodb.conf。將

auth=true   //把#註釋去掉,安全起見,遠端登陸需要使用者驗證
#bind_ip 127.0.0.1  //註釋掉這句,表明允許遠端連線,或者指點允許遠端登陸的ip

重啟資料庫 /etc/init.d/mongodb restart

然後連線到資料庫

use admin
//建立root使用者,root使用者既可以建立使用者,也可以對任何資料庫操作,許可權最高的
db.createUser(
...  {
...    user: "xxxx",
...    pwd: "xxx",
...    roles: [
...       { role: "root", db: "admin" }   //這裡的role是設定使用者的角色 ,db是指屬於哪個資料庫
...    ]
...  }
... )


//或者一般情況下不用root使用者,而是建立一個管理使用者許可權的使用者,注意這個使用者只有管理使用者許可權的權力,而沒有對其他資料庫操作的權利
db.createUser(
...
{ ... user: "tanjiahui", ... pwd: "[email protected]", ... roles: [ { role: "root", db: "admin" } ] ... } ... )

對使用者進行認證

db.auth("name","passwd");
//返回了1表示成功

如果使用者的許可權不足的時候會報錯

not authorized xxxxx

一些小tips:
如果忘記了使用者的密碼之類的,可以通過把auth:true註釋再重啟資料庫再對使用者進行相關建立。
- 常用的role值:
1. 資料庫使用者角色:read、readWrite;
2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級使用者角色:root
// 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內部角色:__system
- 相應的功能
- Read:允許使用者讀取指定資料庫
- readWrite:允許使用者讀寫指定資料庫
- dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
- userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
- clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
- readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
- readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
- userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
- dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
- root:只在admin資料庫中可用。超級賬號,超級許可權

然後就可以通過我們的mongochef對資料庫進行遠端連線了
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
連線後進行用使用者認證,再測試相關命令
出現上圖即表示成功連線到遠端資料庫了。