mongodb創建用戶密碼


mongodb經常被刪,原因是沒有設置賬戶密碼,相應的端口也沒有限。只要知道連接地址誰都可以刪庫。這要歸功於mongodb的默認機制沒有密碼,對新手接盤俠不太友好。

以mongo3.4.24為例,首先在mongo.conf中開啟認證。還沒創建用戶密碼的可以創建用戶了再開啟。

security:
   authorization: enabled

登錄,創建用戶並授權,登錄用admin庫的用戶

普通登錄:bin/mongo 127.0.0.1:27017
認證登錄: bin/mongo 127.0.0.1:27017 -u user -p password --authenticationDatabase admin

查詢和刪除用戶命令

use admin
db.system.users.find();
db.system.users.remove({});

創建admin的用戶,注意admin這個庫要給root權限,否則開啟權限驗證登錄一些操作會顯示沒有權限

use admin
db.createUser({ user: "root", pwd: "password", roles:[{role:"root",db: "admin"}]});
db.auth("root","admin");

特別注意:mongodb和spring-mongodb默認的認證機制不同,會導致項目中mongo連接不上!
 1、mongodb的認證機制有2種:SCRAM-SHA-1和MONGODB-CR。3.0之后版本默認為:SCRAM-SHA-1;
 2、spring-mongodb默認為:MONGODB-CR,並不支持設置認證方式;

db.system.version.findOne({"_id":"authSchema"});
db.system.version.insert({"_id":"authSchema","currentVersion":3})
db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

 

創建其他數據庫的用戶,mongo的每個庫的用戶是獨立的。你有多少個庫就要創建多少個用戶,即使用戶名一樣也要。

use addressbook
db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});
db.auth("zaixiudb","password");
use imRoom
db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"imRoom"},{role:"dbAdmin",db:"imRoom"},{role:"dbOwner",db:"imRoom"}]});
db.auth("zaixiudb","password");

* 這里要特別注意權限從小到大,如下剛開始從網上copy了這句創建用戶。

db.createUser({user:"user",pwd:"password",roles:[{role:"read", db:"addressbook"},{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});

spring boot老是連接不上,報權限錯誤Command failed with error 13 (Unauthorized): 'not authorized on imapi to execute command

mongo compass卻可以連接上,原因是springboot項目中有寫入操作。因此去掉read權限,readWrite權限生效。

開啟conf中的認證模式,重啟啟動mongodb生效。

springboot中的配置

mongoconfig.uri=mongodb://user:password@127.0.0.1:28018
mongoconfig.dbName=imapi
mongoconfig.mapPackage=cn.xyz.mianshi.vo
mongoconfig.roomDbName=imRoom
mongoconfig.username=user
mongoconfig.password=password
mongoconfig.connectTimeout=20000
mongoconfig.socketTimeout=20000
mongoconfig.maxWaitTime=20000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM