MongoDB默認安裝並沒有開啟用戶名密碼登錄,這樣太不安全了,百度出來的開啟驗證登錄的文章,對初次使用MongoDB的小白太不友好了,總結下經驗,自己寫一份指引。
1,我的安裝路徑是C:\Program Files\MongoDB\Server\4.0\bin
2,我是安裝在window10系統下的
3,直接做成系統服務(哪程序員每次用下MongoDB還要手動開啟的,這太不程序員了,程序員不就圖個懶字嘛),在C:\Program Files\MongoDB\ 下創建一個記事本,命名為mongod.cfg寫入以下配置內容,注意要設置日志的path和數據庫的path,我是設置在D:\MongoDB\目錄下的,目錄要自己去建。
systemLog: destination: file path: "D:\MongoDB\log\mongo.log" logAppend: true storage: dbPath: "D:\MongoDB\db" journal: enabled: true security: authorization: "enabled" net: # bindIp: 127.0.0.1 bindIpAll: true port: 27017 setParameter: enableLocalhostAuthBypass: false
然后點開cmd,右鍵以管理員身份運行,輸入
cd C:\Program Files\MongoDB\Server\4.0\bin
進入MongoDB目錄,然后輸入(有可能出錯的情況是,cfg文件里面用tab去代替空格,會導致出錯)
mongod --config "C:\Program Files\MongoDB\Server\mongod.cfg" --install --serviceName "MongoDB_Svr" --serviceDisplayName "MongoDB_Svr"
對應的刪除系統服務的代碼如下,直接在cmd窗口輸入
sc delete MongoDB_Svr
注意,這時服務並沒有啟動,我們先不要啟動服務,下面先添加管理員用戶
4,打開CMD
cd C:\Program Files\MongoDB\Server\4.0\bin
然后開啟一個無需驗證用戶的MongoDB服務
modgod --dbpath="D:\MongoDB\db"
然后這個cmd就留着,進入文件夾 C:\Program Files\MongoDB\Server\4.0\bin 雙擊 mongo.exe打開命令窗口
粘貼下面代碼,運行
use admin db.createUser( { user: "myadmin", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
使用 db.system.users.find() 可查看所有用戶
然后
db.auth("myadmin","123456")
假設你創建了一個TestDB的數據庫,如果要設置這個數據庫的用戶
use TestDB db.createUser( { user: "phoenix", pwd: "123456789", roles: [ { role: "readWrite", db: "TestDB" }, ] } )
這樣就能用phoenix 和 123456789登陸TestDB數據庫了
其它可用的命令還有
刪除用戶db.dropUser("TestDB") 刪除用戶要注意的就是要到對應的數據庫下刪除用戶。 查看數據庫show dbs 開啟服務=>cmd下運行net start MongoDB_Svr 停止服務=>cmd下運行net stop MongoDB_Svr
附:
mongodb內置角色: 1. 數據庫用戶角色:read、readWrite; 2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 備份恢復角色:backup、restore; 5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超級用戶角色:root 7. 內部角色:__system