mdbusrmng – MongoDB User Manager
CLI-Tool zum Auflisten, Anlegen und Löschen von MongoDB-Nutzern.
Quellcode: github.com/thomsbe/mdbusrmng
mdbusrmng listet alle Datenbanken eines Servers mit den dort definierten Nutzern, zeigt die Rechte eines Nutzers über alle Datenbanken und Collections an und legt bzw. löscht Nutzer mit definierten Rollen.
Installation
Python 3.14 wird über uv verwendet.
Aus dem Quellverzeichnis:
uv sync
uv run mdbusrmng --help
Als Systemwerkzeug (nach Veröffentlichung auf PyPI):
uv tool install mdbusrmng
Verbindung
Die MongoDB-URI wird in dieser Reihenfolge ermittelt:
- Option
--uri(steht vor dem Subkommando) - Umgebungsvariable
MDBUSRMNG_URI .env-Datei im aktuellen Verzeichnis mit derselben Variable (überschreibt keine gesetzten Umgebungsvariablen)
Ohne jede Quelle bricht das Tool mit einer Fehlermeldung auf stderr und Exit-Code 1 ab.
Bei Admin-Zugang muss meist ?authSource=admin an die URI angehängt
werden:
mongodb://admin:geheim123@127.0.0.1:27017/?authSource=admin
Kommandos
Datenbanken und Nutzer auflisten (list)
mdbusrmng --uri mongodb://admin:geheim123@127.0.0.1:27017/?authSource=admin list
Listet alle Datenbanken (ohne local/config) mit ihren Nutzern und
Rollen; admin erscheint mit.
Nur die Nutzer einer Datenbank:
mdbusrmng list kunden
Als einzeiliges JSON (für Pipes nach jq/yq):
mdbusrmng list --json | jq '.[0]'
Rechte anzeigen (show)
Alle Rollen und Privileges eines Nutzers über alle Datenbanken:
mdbusrmng show kunden_rw
Gefiltert auf eine Datenbank bzw. Datenbank und Collection:
mdbusrmng show kunden_rw --db kunden
mdbusrmng show kunden_rw --db kunden.personen
Auch hier ist --json möglich.
Copy-&-Paste-URI: show gibt für jeden Eintrag zusätzlich eine
fertige Verbindungs-URI für den Nutzer aus, dafür gedacht, sie in Tools
und Anwendungen einzusetzen:
URI: mongodb://kunden_rw:<PASSWORD>@server:27017/?authSource=kunden
Server und Port stammen aus der aktuell verwendeten URI, der Passwort-
Platzhalter <PASSWORD> ist durch das echte Nutzerpasswort zu ersetzen
(das Tool kennt und zeigt es nie). Die authSource enthält die
Authentifizierungs-Datenbank des Nutzers; weitere Parameter der
verwendeten URI (z. B. tls=true) bleiben erhalten. In der JSON-Ausgabe
findet sich die URI als Feld uri je Eintrag.
Nutzer anlegen (create)
Standardmäßig erhält der Nutzer die Rollen readWrite und dbAdmin auf
der Ziel-Datenbank (Lese-/Schreib-/Adminrechte):
mdbusrmng create --name webuser --password 'geheim' kunden
Mit --ro nur die Rolle read (Read-Only-User):
mdbusrmng create --ro --name webro --password 'geheim' kunden
Fehlt --password, wird es interaktiv verdeckt abgefragt (mit
Bestätigung).
Existiert der Nutzer bereits, bricht das Tool mit einer Fehlermeldung auf stderr und Exit-Code 1 ab.
Nutzer löschen (delete)
mdbusrmng delete --name webuser kunden
Ein Update von Nutzern ist nicht vorgesehen – Nutzer löschen und neu anlegen.
Manuelle Testumgebung (Docker)
Ein lokaler MongoDB-Server für eigene Tests:
docker compose up -d
bash scripts/seed-testdata.sh
Das Seed-Script legt 3 Datenbanken (kunden, bestellungen, lager)
mit je 2 Collections und 2 Demo-Usern an (<db>_rw mit Passwort
test123, <db>_ro ebenfalls test123). Zurücksetzen:
docker compose down -v
Tests
Die Tests starten bei verfügbarem Docker automatisch einen eigenen
MongoDB-Container (Image mongo:8.2); ohne Docker werden die
DB-Tests übersprungen.
uv run pytest
Lizenz
MIT – siehe LICENSE.
Disclaimer
Dieser Code wurde mit Unterstützung eines Large Language Models (LLM) erstellt. Der Autor hat den Code geprüft und gegen eine echte MongoDB-Umgebung getestet, trägt aber die volle Verantwortung für dessen Inhalt.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mdbusrmng-1.0.0.tar.gz.
File metadata
- Download URL: mdbusrmng-1.0.0.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"KDE neon","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bdba9ee3aa854272f40d75a5074ef0a6d5d07b8fa1989d41940ed1c850cc51d
|
|
| MD5 |
e3a4c7f938c954a4eeb08bdd109af9de
|
|
| BLAKE2b-256 |
c3de828188874089cd218cc38d34d625907b6e1ed2c5a713b60dbc515fbd6f37
|
File details
Details for the file mdbusrmng-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mdbusrmng-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"KDE neon","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1223c122f2405c04c8cec13a6ae71c29bff9c21ef2340da5b7ac627f8a3abd0d
|
|
| MD5 |
2405af5ad0d36f76878a43980a8a6e01
|
|
| BLAKE2b-256 |
4c5327c16c491d9df32cc721c52e0e94e209f1b8cd1189545f89a326321f2dac
|