Linux下mongodb用户管理和设置远程登陆
折騰了下linux服務(wù)器上的mongodb的遠(yuǎn)程登陸,遇到了點(diǎn)問題,在這里記錄下來。以備以后查詢。
前提:已經(jīng)在linux上安裝好了mongodb。安裝方法這里不說了,網(wǎng)上各種有。
本地用到的工具(windows):mongoChef(一個(gè)可視化操作工具,可以用于3.xx版本,romongo不行)
首先vim /etc/mongodb.conf。將
auth=true //把#注釋去掉,安全起見,遠(yuǎn)程登陸需要用戶驗(yàn)證 #bind_ip 127.0.0.1 //注釋掉這句,表明允許遠(yuǎn)程連接,或者指點(diǎn)允許遠(yuǎn)程登陸的ip重啟數(shù)據(jù)庫(kù) /etc/init.d/mongodb restart
然后連接到數(shù)據(jù)庫(kù)
use admin //創(chuàng)建root用戶,root用戶既可以創(chuàng)建用戶,也可以對(duì)任何數(shù)據(jù)庫(kù)操作,權(quán)限最高的 db.createUser( ... { ... user: "xxxx", ... pwd: "xxx", ... roles: [ ... { role: "root", db: "admin" } //這里的role是設(shè)置用戶的角色 ,db是指屬于哪個(gè)數(shù)據(jù)庫(kù) ... ] ... } ... )//或者一般情況下不用root用戶,而是創(chuàng)建一個(gè)管理用戶權(quán)限的用戶,注意這個(gè)用戶只有管理用戶權(quán)限的權(quán)力,而沒有對(duì)其他數(shù)據(jù)庫(kù)操作的權(quán)利 db.createUser( ... { ... user: "tanjiahui", ... pwd: "123456@qq", ... roles: [ { role: "root", db: "admin" } ] ... } ... )對(duì)用戶進(jìn)行認(rèn)證
db.auth("name","passwd"); //返回了1表示成功如果用戶的權(quán)限不足的時(shí)候會(huì)報(bào)錯(cuò)
not authorized xxxxx一些小tips:
如果忘記了用戶的密碼之類的,可以通過把a(bǔ)uth:true注釋再重啟數(shù)據(jù)庫(kù)再對(duì)用戶進(jìn)行相關(guān)創(chuàng)建。
- 常用的role值:
1. 數(shù)據(jù)庫(kù)用戶角色:read、readWrite;
2. 數(shù)據(jù)庫(kù)管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復(fù)角色:backup、restore;
5. 所有數(shù)據(jù)庫(kù)角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級(jí)用戶角色:root
// 這里還有幾個(gè)角色間接或直接提供了系統(tǒng)超級(jí)用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內(nèi)部角色:__system
- 相應(yīng)的功能
- Read:允許用戶讀取指定數(shù)據(jù)庫(kù)
- readWrite:允許用戶讀寫指定數(shù)據(jù)庫(kù)
- dbAdmin:允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問system.profile
- userAdmin:允許用戶向system.users集合寫入,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶
- clusterAdmin:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
- readAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限
- readWriteAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫權(quán)限
- userAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
- dbAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限。
- root:只在admin數(shù)據(jù)庫(kù)中可用。超級(jí)賬號(hào),超級(jí)權(quán)限
然后就可以通過我們的mongochef對(duì)數(shù)據(jù)庫(kù)進(jìn)行遠(yuǎn)程連接了
連接后進(jìn)行用用戶認(rèn)證,再測(cè)試相關(guān)命令
出現(xiàn)上圖即表示成功連接到遠(yuǎn)程數(shù)據(jù)庫(kù)了。
總結(jié)
以上是生活随笔為你收集整理的Linux下mongodb用户管理和设置远程登陆的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解C++中的explicit关键字
- 下一篇: python查询斐波那契数列通项公式_分