I work as a software engineer at a small grocery company in Europe. We use MongoDB Atlas for our critical applications, but for development and non-critical apps, we run a 3-node replica set on Hetzner (CX43 instances). It works well and saves us money.

Here’s the thing: managing users on Atlas is really nice. Their web interface makes it easy to create users, assign roles, and manage permissions. Click, click, done.

On our self-hosted instances? Not so much.

The Problem I Kept Running Into

Every time we onboard a new developer or need to adjust database permissions, I had to open mongosh and type commands like this:

javascript

db.createUser({
  user: "developer",
  pwd: "password",
  roles: [
    { role: "read", db: "development" }
  ]
})

It’s not hard, but it’s annoying. Especially when you need to do it multiple times a day. I kept thinking: “There has to be a GUI tool for this, right?”

What I Found (Or Didn’t Find)

I spent some time looking at different MongoDB GUI tools:

Commercial options like Studio 3T ($499-699/year) and Navicat ($1,299) have user management features. They look nice, but that’s a lot of money for something I need occasionally. Plus, I wanted something I could use commercially without licensing restrictions.

MongoDB Compass is free, but it doesn’t have a GUI for user management. You have to drop into the shell and type commands, which defeats the purpose of having a GUI.

Open-source tools either had licenses that weren’t great for commercial use (like AGPLv3), were abandoned, or were complex to set up. I tried a few, but they felt like more work than just using the shell.

What I really wanted was something simple: a web interface where I could create users and assign roles without thinking about it. Something that works for commercial projects. Something that doesn’t require a PhD to set up.

So I Built Something Quick

I’m not claiming this is revolutionary or perfect. I just needed a tool that worked, so I spent a weekend building it.

I call it MongoDB Access Manager. It’s a web-based GUI for managing MongoDB users and roles. That’s it. Nothing fancy.

What It Does

User Management

  • Create new users with a form
  • Assign roles to users
  • View all users in your database
  • Delete users when you don’t need them anymore

Role Management

  • Create custom roles
  • Define privileges visually
  • Assign roles to users
  • See what permissions each role has

Privilege Builder

  • Select databases from a dropdown
  • Choose actions (read, write, admin, etc.)
  • Apply to all collections or specific ones
  • Preview what you’re granting before saving

Connection

  • Connect to any MongoDB instance (local or remote)
  • Works with or without authentication
  • Supports replica sets

That’s basically it. No complicated features. Just the essentials.

How I Built It

I used tools I’m comfortable with:

  • Next.js for the framework
  • TypeScript because I prefer catching errors before runtime
  • Tailwind CSS for styling
  • shadcn/ui for UI components
  • MongoDB Node.js driver for database operations

It’s about 2,000 lines of code. The architecture is straightforward: Next.js API routes handle MongoDB operations, React components render the interface, and sessions keep you connected.

I wanted it to be easy to run, so I added Docker support. One command and you’re up and running.

Some Honest Limitations

I need to be clear about something: this isn’t production-grade security yet.

Right now, the app stores your MongoDB credentials in a cookie (base64 encoded). That’s not ideal. It works for development environments and internal tools behind a VPN, but I wouldn’t expose it directly to the internet.

I built this quickly because I needed it. The credential storage is something I plan to improve. SSO integration is on the roadmap for a future release.

If security is critical for your use case, you might want to wait for v2, or use one of the commercial tools that have been battle-tested.

Why I’m Sharing This

The main reason I built this was simple: I wanted something I could use commercially without restrictions or paying hundreds of dollars per year.

I chose the MIT license because it’s the most permissive. Use it however you want. Modify it. Fork it. Use it in your company. Sell it if you want to. I don’t care. No strings attached.

Maybe you’re in the same situation I was: you need a simple way to manage MongoDB users on self-hosted instances, you don’t want to pay $500/year, and you want something that just works.

If that’s you, maybe this helps.

How to Use It

Quick Start with Docker

bash

docker run -p 8080:8080 ghcr.io/cyrilanthony777/mongodb-access-manager:latest

Then open http://localhost:8080 in your browser.

Or Run from Source

bash

git clone https://github.com/Cyrilanthony777/MongoDB-Access-Manager.git
cd mongodb-access-manager
npm install
npm run dev

Open http://localhost:3000.

Connecting to MongoDB

When you open the app, you’ll see a login form:

  1. Enter your MongoDB connection string (e.g., mongodb://localhost:27017)
  2. If you have authentication enabled, enter username and password
  3. Click Connect

That’s it. You’re in.

Creating a User

  1. Go to the Users tab
  2. Click Create User
  3. Fill out the form (username, password, select roles)
  4. Click Save

The user is created. No shell commands needed.

Creating Custom Roles

  1. Go to the Roles tab
  2. Click Create Role
  3. Use the Privilege Builder to select databases, collections, and actions
  4. Click Save

Now you can assign that role to users.

Real-World Use Cases

Here’s how I actually use this:

Developer Onboarding When someone joins the team, I open the app, create their user, assign read/write to development database, done. Takes 30 seconds.

Temporary Access Sometimes contractors need database access for a week or two. I create a user, they do their work, I delete the user. Simple.

Permission Debugging When someone says “I can’t access database X,” I look up their user, see what roles they have, add the missing one. Problem solved.

Quick Setups For internal tools that need database access, I can set up users quickly without context switching to the terminal.

What’s Next

I have a list of things I want to add:

Short Term

  • Better credential storage (replacing the cookie approach)
  • SSO integration (OAuth, OIDC)
  • Dark mode
  • Connection profiles for managing multiple MongoDB instances

Medium Term

  • Bulk user operations (CSV import/export)
  • Audit logging
  • Role templates for common scenarios
  • MongoDB Atlas support

Long Term

  • Just-in-time access (temporary permissions)
  • Approval workflows
  • Compliance reporting

But honestly, I’m not sure how much time I’ll have to work on this. It solves my immediate problem, and I wanted to share it in case it helps someone else.

If you want to contribute, the repository is on GitHub. Pull requests welcome.

Some Comparisons

People might ask “How is this different from other tools?” Here’s an honest comparison:

FeatureMongoDB Access ManagerStudio 3TNavicatMongoDB Compass
PriceFree (MIT)$499-699/year$1,299 one-timeFree (SSPL)
User Management GUIYesYesYesNo
Role Management GUIYesYesYesNo
Easy to SetupVery easyMediumMediumEasy
Production ReadyNot yetYesYesYes
Commercial UseYes (MIT)PaidPaidSSPL (complicated)
Docker SupportYesNoNoNo
Web-BasedYesNo (Desktop)No (Desktop)No (Desktop)

The commercial tools are more mature and have better security. If you need production-grade features and have budget, they’re probably better choices.

This tool is for people like me who need something simple for development environments and don’t want to spend money or deal with complex licensing.

Questions You Might Have

Is this safe to use?

For development and internal tools behind a VPN, yes. For production systems exposed to the internet, I’d recommend waiting for better credential storage. Or use it with additional security layers.

Does it work with MongoDB Atlas?

Not right now. Atlas uses a different API. It’s on the roadmap, but no timeline yet.

What MongoDB versions work?

I’ve tested with MongoDB 4.x, 5.x, 6.x, and 7.x. Should work with any recent version.

Can I run this in production?

You can, but I’d recommend adding security layers:

  • Run it behind a VPN or bastion host
  • Use HTTPS
  • Don’t expose it directly to the internet
  • Wait for SSO support if you need it

Do you store my credentials?

Only in your browser session via a cookie. When you close the browser or log out, they’re gone. Nothing is saved to disk or a database.

Can I contribute?

Yes! The repository is on GitHub. Issues and pull requests welcome. I’m not a full-time open-source maintainer, so responses might take a few days.

What about replica sets?

Works fine. Just use your normal MongoDB connection string.

Why didn’t you use framework X or library Y?

I used what I know and what works. Next.js, TypeScript, and Tailwind are tools I’m comfortable with. That’s it.

Is it Vibe Coded ?

Yes, I had a problem, I sat down one weekend, and I built something that solved it. No extensive planning, no perfect architecture, just solving the immediate need.

Is the code perfect? No. Could it be more secure? Yes. Are there edge cases I haven’t handled? Probably.

But it works for what I needed, and maybe it works for what you need too.

I plan to improve it over time, but I wanted to get it out there now rather than wait for it to be “perfect.”

Why Open Source?

I thought about this. Should I keep this as an internal tool? Should I try to monetize it?

But here’s the thing: I’ve benefited so much from open-source software. Tools that people built and shared freely have made my job easier countless times. This is me giving something back.

Plus, I genuinely think there’s a gap here. MongoDB is popular. Self-hosted MongoDB is common. But simple, free tools for user management are rare.

If this helps even a few people avoid the frustration I had, that’s good enough.

Getting Started

If you want to try it:

GitHub: https://github.com/Cyrilanthony777/MongoDB-Access-Manager

Docker:

bash

docker run -p 8080:8080 ghcr.io/cyrilanthony777/mongodb-access-manager:latest

From source:

bash

git clone https://github.com/Cyrilanthony777/MongoDB-Access-Manager.git
cd mongodb-access-manager
npm install
npm run dev

If you find bugs, open an issue. If you have ideas, share them. If you want to contribute, pull requests are welcome.

I can’t promise I’ll implement everything or respond immediately. I have a full-time job and other responsibilities. But I’ll do my best.

Final Thoughts

I didn’t set out to build “the best MongoDB user management tool ever.” I just needed something that worked for my specific situation: managing self-hosted MongoDB instances, using it commercially without restrictions, and not paying hundreds of dollars for basic features.

This tool solves that problem for me. Maybe it solves it for you too.

It’s not perfect. It’s not production-ready for high-security environments. But it’s honest, it’s free, and it works.

If you try it and it helps you, that’s great. If you find issues or have suggestions, let me know. If you contribute code, even better.

And if it doesn’t fit your needs, that’s fine too. Use what works for you.

I’m just sharing something I built in case it’s useful to someone else.