Manage multiple databases directly from VS Code using Docker!
✨ Features
🎯 Core
- ✅ 12+ Databases — MySQL, PostgreSQL, MongoDB, Redis, Oracle, MSSQL, SQLite, CockroachDB, Neo4j, Cassandra, Elasticsearch and more
- 🔄 Instant Switching — Switch between different database types effortlessly
- 🐳 Full Docker Support — No dependencies required on your machine
- 💾 Data Persistence — Your data is stored in Docker volumes and persists between sessions
🚀 Server Management
- ⏯️ Start/Stop — One-click control over your servers
- 🗑️ Remove — Completely clean up containers and volumes
- 🔌 Custom Ports — Choose any available port
- 🎯 Versioning — Run any version of your database
- 🔐 Security — Set passwords for access control
📊 Monitoring
- 📈 Real-time Status — Monitor your server state in the status bar
- 🌳 Tree View Interface — Convenient hierarchical structure
- ⚡ Performance — View CPU and memory usage
- 🔔 Notifications — Always stay informed
🔍 Extensibility
- 🌐 Docker Hub Search — Search and use any Docker images
- ⚙️ Full Configuration — Customize everything to your needs
- 📦 Multi-Database — Manage multiple databases simultaneously
- 🎨 Beautiful UI — Emoji icons and intuitive navigation
📋 Requirements
Prerequisites
- VS Code version 1.85.0 or higher
- Docker version 20.0 or higher
Docker Installation
| Platform | Link |
|---|---|
| 🍎 macOS | Docker Desktop |
| 🪟 Windows | Docker Desktop |
| 🐧 Linux | Docker Engine |
Verify installation:
docker --version
docker run hello-world
🚀 Installation
Method 1: VS Code Marketplace (Recommended)
- Open VS Code
- Press
Cmd+Shift+X(macOS) orCtrl+Shift+X(Windows/Linux) - Search for "Database Server Manager"
- Click Install
Method 2: Command Line
code --install-extension mazylawzey.database-server
Method 3: From Source
git clone https://github.com/MazyLawzey/mysql-vsc-server
cd mysql-vsc-server
npm install
npm run esbuild
# Open as extension in VS Code
📖 Usage
1️⃣ Open the Control Panel
Click the 🔒 icon in the Activity Bar (left sidebar)
2️⃣ Choose a Database
- Click on the database type you want to use
- Or use the command
Database: Switch Engine
3️⃣ Start the Server
- Click ▶️ Start Server
- Or use the command
Database: Start Server - First run may take a minute (Docker image download)
4️⃣ Manage Databases
Create DB: Database: Create Database
Stop Server: Database: Stop Server
Remove Server: Database: Remove Server
View Status: Database: View Status
Settings: Database: Configure Settings
Search Docker: Database: Search Docker Images
5️⃣ Connect in Your Code
Connect to your database using standard parameters:
MySQL/PostgreSQL/Oracle/MSSQL/CockroachDB:
Host: localhost
Port: 3306 (MySQL) or 5432 (PostgreSQL) — see status
User: root (default)
Password: your_password
MongoDB/Redis/Cassandra:
Host: localhost
Port: 27017 (MongoDB) or 6379 (Redis) — see status
Connection Examples:
// Node.js + MySQL
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'mydb'
});
# Python + PostgreSQL
import psycopg2
conn = psycopg2.connect(
host="localhost",
user="postgres",
password="your_password",
database="mydb"
)
// Node.js + MongoDB
const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient('mongodb://localhost:27017');
🗄️ Supported Databases
🔵 Relational Databases (7)
| Database | Emoji | Port | Image |
|---|---|---|---|
| MySQL | 🐬 | 3306 | mysql:latest |
| PostgreSQL | 🐘 | 5432 | postgres:latest |
| MariaDB | 🌊 | 3307 | mariadb:latest |
| Oracle Database | 🔴 | 1521 | oracle/database:latest |
| Microsoft SQL Server | 🔵 | 1433 | mcr.microsoft.com/mssql/server |
| SQLite | 📄 | N/A | Built-in support |
| CockroachDB | 🪳 | 26257 | cockroachdb/cockroach:latest |
📊 NoSQL Databases (3)
| Database | Emoji | Port | Image |
|---|---|---|---|
| MongoDB | 🍃 | 27017 | mongo:latest |
| Cassandra | ⚡ | 9042 | cassandra:latest |
| Neo4j | 🕸️ | 7687 | neo4j:latest |
💾 Other Systems (2)
| System | Emoji | Port | Image |
|---|---|---|---|
| Redis | 🔍 | 6379 | redis:latest |
| Elasticsearch | 📦 | 9200 | docker.elastic.co/elasticsearch/elasticsearch:latest |
🌐 Custom Images
Search and use any Docker image:
- Click 🔍 Search Docker Images
- Enter the name (e.g.,
postgres,mongodb,rabbitmq) - Select desired image from the list
- Configure port and container name
- Done! 🚀
🎮 Commands
| Command | Shortcut | Description |
|---|---|---|
Database: Start Server |
— | Start the database |
Database: Stop Server |
— | Stop the database |
Database: Remove Server |
— | Remove the database |
Database: Switch Engine |
— | Switch database type |
Database: Create Database |
— | Create new database |
Database: View Status |
— | Show status |
Database: Configure Settings |
— | Open settings |
Database: Search Docker Images |
— | Search Docker images |
⚙️ Configuration
The configuration file is automatically created at:
~/.config/Code/User/globalStorage/mazylawzey.database-server/
Example Configuration:
{
"currentEngine": "mysql",
"containers": {
"mysql": {
"port": 3306,
"password": "your_password",
"version": "latest",
"containerName": "mysql-vsc"
},
"postgresql": {
"port": 5432,
"password": "your_password",
"version": "latest",
"containerName": "postgres-vsc"
}
},
"databases": {
"mysql": [],
"postgresql": []
}
}
Customization:
- Open the command
Database: Configure Settings - Edit the parameters:
- 🔌 Port
- 🔐 Password
- 📦 Database version
- 🏷️ Container name
🖼️ Screenshots
Control Panel
🗄️ Database Manager
├── 🐬 MySQL (🟢 Running)
│ ├── 📊 Status: Running on port 3306
│ ├── 💾 Databases
│ │ ├── database1
│ │ ├── database2
│ │ └── myapp_db
│ ├── ⚡ Performance: CPU 2%, RAM 256MB
│ └── 🎯 Actions
│ ├── ⏸️ Stop
│ ├── ➕ Create DB
│ └── ⚙️ Settings
│
├── 🐘 PostgreSQL (🔴 Stopped)
│ ├── 📊 Status: Stopped
│ └── 🎯 Actions
│ ├── ▶️ Start
│ └── ⚙️ Settings
│
└── 🍃 MongoDB (🟢 Running)
├── 📊 Status: Running on port 27017
└── 🎯 Actions
├── ⏸️ Stop
└── ⚙️ Settings
🐛 Troubleshooting
❌ "Docker not found"
# Install Docker Desktop
# https://www.docker.com/products/docker-desktop
# Or verify Docker is running
docker ps
❌ "Connection refused"
# Ensure the server is running
# Check the correct port in settings
# Restart VS Code
❌ "Insufficient permissions"
# Grant Docker permissions (Linux)
sudo usermod -aG docker $USER
newgrp docker
❌ "Port already in use"
# Find process on port
lsof -i :3306 # or another port
# Change port in extension settings
🤝 Contributing
Pull requests are welcome! For major changes:
- Open an Issue for discussion
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📝 License
GNU General Public License v3.0 — see LICENSE file
👨💻 Author
Made with ❤️ for the developer community
🙏 Acknowledgments
📞 Support
- 🐛 Report a bug: GitHub Issues
- 💡 Request a feature: GitHub Discussions
- 💬 Questions: GitHub Discussions
⭐ Like the extension? Give it a star on GitHub!
Made with 🚀 by Mazylawzey
- Database name - Database user - Database password - Done! Your database is ready
5. Connect to Your Database
Use any MySQL client:
Host: localhost
Port: 3306
Username: your_user
Password: your_password
Database: your_database
Popular clients:
- DBeaver Community
- MySQL Workbench
- Command line:
mysql -h localhost -u your_user -p
🎯 Commands
All commands are available in the MySQL Docker Manager sidebar:
| Command | Button | Action |
|---|---|---|
| Start Server | ▶️ | Start MySQL Docker container |
| Stop Server | ⏹️ | Stop MySQL Docker container |
| Create Database | ➕ | Create new database with user |
| View Status | ℹ️ | Show server status and info |
| Configure Settings | ⚙️ | Change port, password, version |
⚙️ Configuration
Click ⚙️ Settings to customize:
- Port - Default: 3306
- Root Password - Default: root
- MySQL Version - Default: latest
- Container Name - Default: vscode-mysql
💾 Data Persistence
All your data is automatically saved in a Docker named volume called vscode-mysql-data.
This approach works seamlessly on:
- ✅ Windows (Docker Desktop)
- ✅ macOS (Intel & Apple Silicon)
- ✅ Linux (all distributions)
Why Docker volumes?
- No path issues across different operating systems
- Data is managed by Docker
- No manual directory creation needed
- Works with Docker Desktop and Docker Engine
When you stop the server:
- ✅ Data is preserved
- ✅ Container is paused
- ✅ You can restart anytime
When you start the server again:
- ✅ All previous data is restored
- ✅ Same databases and users are available
- ✅ No data loss!
🛠️ Technology Stack
- Language: TypeScript
- API: VS Code Extension API
- Runtime: Docker
- Database: MySQL
- Build: esbuild
📦 What's Inside
src/
├── extension.ts # Main extension entry point
├── commands/
│ └── index.ts # All 5 commands
├── docker/
│ └── dockerManager.ts # Docker container management
├── config/
│ └── configManager.ts # Configuration management
└── ui/
├── statusBarManager.ts # Status bar component
└── treeDataProvider.ts # Sidebar tree view
🎓 Examples
Node.js Connection
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({
host: 'localhost',
user: 'your_user',
password: 'your_password',
database: 'your_database'
});
Python Connection
import mysql.connector
conn = mysql.connector.connect(
host="localhost",
user="your_user",
password="your_password",
database="your_database"
)
PHP Connection
$conn = new mysqli(
"localhost",
"your_user",
"your_password",
"your_database"
);
🐛 Troubleshooting
Docker not found
Error: docker command not found
Solution: Install Docker from https://www.docker.com/products/docker-desktop
Docker daemon not running
Error: Cannot connect to Docker daemon
Solution: Open Docker Desktop application
Port already in use
Error: Port 3306 already in use
Solution: Change port in Settings (⚙️)
Can't connect to database
Check:
- Server status (ℹ️ View Status)
- Correct host (localhost)
- Correct port (default 3306)
- Correct username and password
Data loss
If you deleted the container but .vscode-mysql-data folder exists:
- Click ▶️ Start Server
- Extension will create new container and restore your data
📊 Stats
- Version: 0.1.0
- Size: 61 KB
- Dependencies: 0 (uses Node.js built-ins)
- License: GNU GPL 3.0
- Author: mazylawzey
🔗 Links
💡 Tips
- Use strong passwords in production environments
- Backup important data regularly
- Check disk space - databases can grow large
- Monitor logs -
docker logs vscode-mysql - Use version control for your database scripts
🚀 Future Features
- MariaDB support
- Database backup/restore
- SQL query editor
- Visual database designer
- PostgreSQL support
- Export/Import databases
- Database snapshots
- Multi-server management
📝 License
GNU GPL 3.0 © 2026 mazylawzey
🤝 Contributing
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
❓ Support
If you encounter any issues:
- Check Troubleshooting section
- Check Docker is installed and running
- Review Docker logs:
docker logs vscode-mysql - Open an issue on GitHub
Made with ❤️ for developers
Quick Links
If you find this extension helpful, please give it a ⭐ on GitHub!