1°/ Création d'un administrateur général
Pour créer un utilisateur administrateur ayant tous les droits sur toutes les tables, lancer mongosh, puis :
use admin
db.createUser(
{
user: "admin",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
Remarques :
- bien penser à sélectionner la base admin (cf. 1ère ligne)
- si pwd vaut passwordPrompt(), mongosh demande de saisir le mot passe, mais ATTENTION une seule fois (pas de confirmation)
2°/ Création d'un accès simple, pour un utilisateur et une base en particulier
L'exemple qui suit suppose que la base s'appelle mydb et que l'utilisateur se nomme toto
use mydb
db.createUser(
{
user: "toto",
pwd: passwordPrompt(), // or cleartext password
roles: [ "readWrite" ]
}
)
Remarque : bien penser à sélectionner la base mydb (cf. 1ère ligne)
3°/ Mettre en place l'authentification
En étant root, il faut éditer le fichier /etc/mongod.conf, en ajoutant :
security:
authorization: enabled
Ensuite, relancer le serveur mongod :
# systemctl restart mongod
4°/ Accès à une base via mongosh
Pour accéder au serveur et à n'importe quelle base en étant admin :
mongosh -u admin -p
Pour accéder à mydb en étant toto :
mongosh mydb -u toto -p
Remarques :
- dans les deux cas, mongosh demande à taper le mot de passe,
- si on ne met pas un nom de la base autorisée pour toto, mongod refuse l'accès.
5°/ Accès distant
Pour autoriser l'accès au serveur depuis une machine distante, il faut relier le serveur à une de ses adresses IPs. Par exemple, en supposant que son IP soit 192.168.1.10, alors il faut éditer /etc/mongod.conf et modifier comme suivant :
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.10
Remarques :
- le port par défaut est 27017 mais on peut le changer comme on veut,
- il est possible de restreindre l'accès externe en paramétrant les restrictions utilisateur. Par exemple, pour limiter l'accès de toto à mydb seulement depuis la machine d'IP 192.168.1.200 :
use mydb
db.updateUser('toto', { authenticationRestrictions: [ { clientSource: ["192.168.1.200"] } ] })