Open menu

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"] } ] })