diff --git a/HowtoMongoDB.md b/HowtoMongoDB.md index 86989901..f7c108c5 100644 --- a/HowtoMongoDB.md +++ b/HowtoMongoDB.md @@ -199,24 +199,37 @@ $ mongo admin -u mongoAdmin -p PASSWORD Pour les accès aux bases, les utilisateurs sont stockés dans la collection _system.users_ propre à chaque base. -## Administration des utilisateurs +## Accès en CLI -Comme pour MySQL, on peut manipuler mongo en CLI en mode interactif avec la commande `mongo` +Comme pour MySQL, on peut manipuler MongoDB en CLI en mode interactif avec la commande `mongosh`. ``` -$ mongo admin -u mongoAdmin -p PASSWORD +$ mongosh admin -u mongoAdmin -p PASSWORD ``` -Ici, pour se connecter à la base locale admin. Comme la base d'authentification n'est pas spécifiée, ça sera la base à laquelle on se connecte (ici admin) qui servira pour l'authentification. +Ici, pour se connecter à la base locale `admin`. Comme la base d'authentification n'est pas spécifiée, ça sera la base à laquelle on se connecte (ici `admin`) qui servira pour l'authentification. > *Note*: Pour vous connecter à une base différente de celle d'authentification, on pourra spécifier le nom de cette base avec l'argument `--authenticationDatabase XXX` -### Créer un utilisateur pour une base de données +## Gestion des utilisateurs + +Rappel : chaque utilisateur est associé à une base. + + +### Lister les utilisateurs + +~~~ +> use admin +admin> db.system.users.find() +{ "_id" : "admin.mongoAdmin", "userId" : UUID("3d475ec9-b82c-4312-8ce6-399bcbe3ca7a"), "user" : "mongoAdmin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "lO6VBPnKD0dC5TwRcCJwZg==", "storedKey" : "AUUwnA6v/8LbSEUpDU5EXQmp9sY=", "serverKey" : "DjHukfkoW0QE5Zy/5plD9FLrsu8=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "fqRp+/wrOGTyk1hiTn4RoPQr4jWVlqw79GsD4g==", "storedKey" : "/aaz0CJHlFfFDD5bSBPOBCnipn07ezx+X0pHFABeOV0=", "serverKey" : "W6BOf07RoYytpgJc4KOoTTTID7qJ1iah9Wqwub9xjgE=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } +~~~ + + +### Créer un utilisateur ~~~ > use myApp; - myApp> db.createUser( { "user" : "myAppOwner", @@ -235,39 +248,29 @@ myApp> db.createUser( # apg -n1 -m23 # mongosh … > use admin -> db.changeUserPassword("my_user", passwordPrompt()) +admin> db.changeUserPassword("my_user", passwordPrompt()) ~~~ Sans _prompt_ : ~~~ > use admin -> db.changeUserPassword("my_user", "my_password" +admin> db.changeUserPassword("my_user", "my_password" ~~~ ### Supprimer un utilisateur -Supprimons l'utilisateur foo de la base admin : +Supprimons l'utilisateur `foo` de la base admin : ~~~ > use admin - -> db.dropUser('foo') +admin> db.dropUser('foo') true ~~~ -### Lister tous les utilisateurs -~~~ -> use admin - -> db.system.users.find() -{ "_id" : "admin.mongoAdmin", "userId" : UUID("3d475ec9-b82c-4312-8ce6-399bcbe3ca7a"), "user" : "mongoAdmin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "lO6VBPnKD0dC5TwRcCJwZg==", "storedKey" : "AUUwnA6v/8LbSEUpDU5EXQmp9sY=", "serverKey" : "DjHukfkoW0QE5Zy/5plD9FLrsu8=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "fqRp+/wrOGTyk1hiTn4RoPQr4jWVlqw79GsD4g==", "storedKey" : "/aaz0CJHlFfFDD5bSBPOBCnipn07ezx+X0pHFABeOV0=", "serverKey" : "W6BOf07RoYytpgJc4KOoTTTID7qJ1iah9Wqwub9xjgE=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } -~~~ - - -## Administration des bases de données +## Gestion des bases de données ### Lister les bases de données @@ -279,19 +282,6 @@ foo 0.000GB local 0.000GB ~~~ -### Supprimer une base de données - -Pour supprimer la base foo : - -~~~ -> use foo -> db.runCommand( { dropDatabase: 1 } ) -{ - "dropped" : "foo", - "ok" : 1 -} - -~~~ ### Lister les collections d'une base de données @@ -299,11 +289,12 @@ Pour supprimer la base foo : > use foo switched to db foo -> show collections +foo> show collections bar baz ~~~ + ### Créer une base de données Il n’y a pas de commande équivalente à `CREATE DATABASE` dans MongoBD. Une base de données est effectivement créée lorsque des données sont insérées dans la base. @@ -311,14 +302,28 @@ Il n’y a pas de commande équivalente à `CREATE DATABASE` dans MongoBD. Une b Pour créer une base de données, il faut s’y attacher avec la commande `use ` puis ajouter des données dans une collection : ``` -use math -db.constants.insert({name: "e", value: "2.7182818"}) +> use math +math> db.constants.insert({name: "e", value: "2.7182818"}) ``` Les commandes précédentes permettent d’ajouter un élément à une collection `constants` dans la base `math`. `name` et `value` sont des chaînes de caractères quelconques et non des mots-clés. +### Supprimer une base de données + +Pour supprimer la base foo : + +~~~ +> use foo +foo> db.runCommand( { dropDatabase: 1 } ) +{ + "dropped" : "foo", + "ok" : 1 +} +~~~ + + ## Autres commandes diverses Voici quelques opérations de base