Windows環境下給MongoDB設置密碼

安全問題

Mongodb安裝後自身是沒有密碼的,用戶連接只需填寫id地址,端口號,數據庫名稱即可,只要你服務器的mongodb數據庫端口開放,任何人的電腦都可以連接到你的數據庫,操作修改你的mongodb數據,盜取你的數據庫,然後留下一個郵箱和賬號,要求你給比特幣才肯歸還數據庫給你

下面就簡單記錄下自己倒騰MongoDB時候設置密碼的操作。

一、連接上MongoDB

在命令行輸入mongo連接上數據庫(默認數據庫已經安裝並且成功啓動,不知道怎麼安裝啓動可參考https://blog.csdn.net/qq_33692349/article/details/85176128)輸入show dbs查看數據庫

二、切換到 'admin' 數據庫 

use admin

三、給admin設置用戶密碼

db.createUser({user: 'root', pwd: '123456', roles: ['root']})

其中user: 用戶名, pwd: 用戶密碼,roles: 用來設置用戶的權限,如讀,讀寫 等等

四、驗證是否設置成功

db.auth(用戶名,用戶密碼) 這裏用db.auth('root', '123456') 如果返回 '1'表示驗證成功, 如果是 '0' 表示驗證失敗..

.

五、重啓MongoDB

這次重啓必須把設置的auth設置爲true

到此admin也就是超級管理員的密碼已經完成了,可操作所有的數據庫,以及給單個數據庫添加用戶和權限,其連接方式爲

xxx.db('mongodb://your name: your pwd@ ip :27017');
your name:爲用戶名
your pwd:爲密碼

使用可視化連接也需要輸入密碼,直接連接將報錯

使用剛纔設置的root用戶和密碼123456連接

此時便可成功連接

到此,數據庫密碼設置就已經完成了。

現在要給特定的每個庫設置權限,開發者可以直接用用戶直接連指定的數據庫操作,比如我這裏有一個庫,庫名字叫做test,這裏以test這個庫爲例,我們要給他新建一個用戶userTest具有寫的權限,開發者便可直接使用userTest這個賬號密碼去操作這一個數據庫,而無法操作其他數據庫

一、連接數據庫後並切換到test數據庫

use test

二、爲這個庫添加一個用戶,並且賦予權限

db.createUser(
                {
                    user:'testUser',
                    pwd:'123456',
                    roles: [{role:'readWrite',db:'test'}]
                }
)


這行代碼意思是 創建一個testUser用戶 給予讀寫權限 db表示該用戶操作的數據庫名 role設置爲‘dbOwner’則表示該用戶可對數據進行任何操作,對開發者一般都用dbOwner角色

mongodb role類型

  • 數據庫用戶角色(Database User Roles):

read:授予User只讀數據的權限
readWrite:授予User讀寫數據的權限

  • 數據庫管理角色(Database Administration Roles):

dbAdmin:在當前dB中執行管理操作
dbOwner:在當前DB中執行任意操作
userAdmin:在當前DB中管理User

  • 備份和還原角色(Backup and Restoration Roles):

backup
restore

  • 跨庫角色(All-Database Roles):

readAnyDatabase:授予在所有數據庫上讀取數據的權限
readWriteAnyDatabase:授予在所有數據庫上讀寫數據的權限
userAdminAnyDatabase:授予在所有數據庫上管理User的權限
dbAdminAnyDatabase:授予管理所有數據庫的權限

  • 集羣管理角色(Cluster Administration Roles):

clusterAdmin:授予管理集羣的最高權限
clusterManager:授予管理和監控集羣的權限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor:授予監控集羣的權限,對監控工具具有readonly的權限
hostManager:管理Server
 

三、重啓MongoDB

OK,一切搞定可單獨使用testUser這個用戶名去直接連接test這個庫

xxx.db('mongodb://your name: your pwd@ ip :27017/test');
your name:爲用戶名就是testUser
your pwd:爲密碼就是123456

接下來在說一下刪除用戶:

一、首先用超級管理員登錄

二、切換到要刪除的用戶所管理的數據庫上

例如,testUser用戶管理test數據庫。首先切換到shop數據庫

三、再刪除shopuser用戶

db.dropUser('testUser')

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章