Alla användare skapade i MongoDB 3.x skapas med SCRAM-SHA1 som bryter bakåtkompatibiliteten med verktyg som förväntar sig MongoDB-CR. Det finns en tvättlista med verktyg och drivrutiner som ännu inte har uppdaterats för att stödja SCRAM-SHA1, som Robomongo och MongoVUE.
I vissa fall, även om den nyare versionen av drivrutinen/ORM är tillgänglig, kanske du inte är redo att uppgradera din drivrutin på grund av vissa kompatibilitetsproblem.
MongoDB stöder två autentiseringsmetoder:
- MongoDB-CR (Challenge-response)
Mekanism för att autentisera användare med lösenord. Standard autentiseringsmekanism fram till 2.6.x. Se dokumentationen för mer information. - SCRAM-SHA1
Detta är en IETF-standard för utmaningssvarsmekanismer för autentisering av användare med lösenord. Detta är det nyare och säkrare systemet. Den är inte bakåtkompatibel med MongoDB-CR. Se dokumentationen för mer information.
MongoDB CR är det äldre autentiseringssystemet. MongoDB 3.X bytte standardanvändarautentiseringssystemet till SCRAM-SHA1. Så alla nya användare som skapas i systemet är SCRAM-SHA1-användare. Eftersom SCRAM-SHA1 inte är bakåtkompatibel bryter den autentisering med alla användare som använder MONGODB-CR-mekanismen.
Men du kanske vill använda den nya WiredTiger-lagringsmotorn som är tillgänglig i MongoDB 3.x. Här är stegen för att konfigurera MONGODB-CR som standardautentiseringsmekanism i MongoDB 3.x, förutsatt att du kör en replikuppsättning:
- Skapa ett 3.x MongoDB-kluster.
- Stoppa alla noder i replikuppsättningen förutom den primära.
- Inaktivera autentisering på den primära och starta om noden. Jag gjorde detta genom att kommentera följande poster i MongoDB conf-filen och starta om servern:
#security: # authorization: enabled # keyFile: /var/lib/mongo/rskey #replication: # replSetName: RS-rsname-0
- Anslut till det primära och ändra schemaversionen:
use admin; var schema = db.system.version.findOne({"_id" : "authSchema"}); schema.currentVersion = 3; db.system.version.save(schema)
- Ångra ändringar i mongodb.conf-filen i steg 3 ovan och starta om MongoDB.
- Starta om MongoDB på de andra noderna i replikuppsättningen och se till att replikuppsättningen är frisk. När detta är gjort kommer alla användare som skapats på systemet att vara MongoDB-CR-användare. Du kan validera detta genom att utföra följande kommando:
db.system.users.find().pretty();
Observera dock att detta bara bör vara en tillfällig lösning. Den säkrare långsiktiga lösningen är att uppgradera din MongoDB-server för att använda SCRAM-SHA1-modellen. När du är redo att uppgradera, kör följande skript för att uppgradera schemaversionen av dina användare till SCRAM-SHA1:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});