Skip to main content

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:

  1. Option --uri (steht vor dem Subkommando)
  2. Umgebungsvariable MDBUSRMNG_URI
  3. .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

mdbusrmng-1.0.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdbusrmng-1.0.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

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

Hashes for mdbusrmng-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1bdba9ee3aa854272f40d75a5074ef0a6d5d07b8fa1989d41940ed1c850cc51d
MD5 e3a4c7f938c954a4eeb08bdd109af9de
BLAKE2b-256 c3de828188874089cd218cc38d34d625907b6e1ed2c5a713b60dbc515fbd6f37

See more details on using hashes here.

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

Hashes for mdbusrmng-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1223c122f2405c04c8cec13a6ae71c29bff9c21ef2340da5b7ac627f8a3abd0d
MD5 2405af5ad0d36f76878a43980a8a6e01
BLAKE2b-256 4c5327c16c491d9df32cc721c52e0e94e209f1b8cd1189545f89a326321f2dac

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page