Skip to content
Back to skills

Docker Local Database

ASecurity

Database operations with docker-local - create, connect, backup, restore for MySQL and PostgreSQL

  • 666 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 8, 2026
databasesgophpbashsqldockertestingdatabase

Works with

  • cli

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill docker-local-database --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Docker Local Database?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Docker Local Database
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-docker-local-database/badge)](https://www.skillsdirectory.com/skills/majiayu000-docker-local-database)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: docker-local-database
description: Database operations with docker-local - create, connect, backup, restore for MySQL and PostgreSQL
---

# Docker-Local Database Skill

## Overview

This skill manages database operations in docker-local:
- Create databases
- Connect to database CLIs
- Backup and restore
- Run migrations
- Manage Redis

## Available Database Services

| Service | Version | Port | Use Case |
|---------|---------|------|----------|
| MySQL | 9.1 | 3306 | Traditional relational database |
| PostgreSQL | 17 | 5432 | Advanced features, pgvector for AI |
| Redis | 8 | 6379 | Cache, sessions, queues |

## MANDATORY: Prerequisite Check

**Before ANY docker-local command, verify installation:**

```bash
which docker-local > /dev/null 2>&1
```

**If docker-local is NOT found:**
1. Stop and ask the user if they want to install it
2. If yes, install via: `composer global require mwguerra/docker-local`
3. Add to PATH: `export PATH="$HOME/.composer/vendor/bin:$PATH"`
4. Initialize: `docker-local init`
5. Verify: `which docker-local && docker-local --version`

## Database Commands

### Connect to Database CLIs

```bash
# MySQL CLI
docker-local db:mysql

# PostgreSQL CLI
docker-local db:postgres

# Redis CLI
docker-local db:redis
```

### Create Database

```bash
# Create MySQL database
docker-local db:create myapp

# Creates:
# - myapp (main database)
# - myapp_testing (for tests)
```

### Backup Database

```bash
# Dump current project database
docker-local db:dump

# Dump specific database
docker-local db:dump myapp

# Output goes to: myapp_YYYY-MM-DD_HH-MM-SS.sql
```

**Manual backup commands:**
```bash
# MySQL
docker exec mysql mysqldump -u laravel -psecret myapp > backup.sql

# PostgreSQL
docker exec postgres pg_dump -U laravel myapp > backup.sql
```

### Restore Database

```bash
# Restore from SQL file
docker-local db:restore backup.sql

# Restore to specific database
docker-local db:restore backup.sql myapp
```

**Manual restore commands:**
```bash
# MySQL
docker exec -i mysql mysql -u laravel -psecret myapp < backup.sql

# PostgreSQL
docker exec -i postgres psql -U laravel myapp < backup.sql
```

### Run Migrations

```bash
# Fresh migration with seeds
docker-local db:fresh

# Regular migration
docker-local tinker <<< "Artisan::call('migrate')"

# Or via artisan
docker exec -w /var/www/myapp php php artisan migrate
```

## Default Credentials

### MySQL
```
Host:     mysql (inside Docker) / localhost (from host)
Port:     3306
User:     laravel (or root)
Password: secret
```

### PostgreSQL
```
Host:     postgres (inside Docker) / localhost (from host)
Port:     5432
User:     laravel
Password: secret
```

### Redis
```
Host:     redis (inside Docker) / localhost (from host)
Port:     6379
Password: (none)
```

## Connecting from Host Machine

For GUI tools like TablePlus, DBeaver, or DataGrip:

### MySQL Connection
```
Host:     localhost (or 127.0.0.1)
Port:     3306
User:     laravel (or root)
Password: secret
Database: myapp
```

### PostgreSQL Connection
```
Host:     localhost (or 127.0.0.1)
Port:     5432
User:     laravel
Password: secret
Database: myapp
```

## Connecting from Inside Container

Laravel .env should use Docker service names:

```bash
# MySQL
DB_HOST=mysql
DB_PORT=3306

# PostgreSQL
DB_HOST=postgres
DB_PORT=5432

# Redis
REDIS_HOST=redis
REDIS_PORT=6379
```

**Important:** Use service names (mysql, postgres, redis), NOT localhost!

## PostgreSQL with pgvector

PostgreSQL 17 includes pgvector for AI embeddings:

```sql
-- Extension is pre-installed
-- Just use it in your tables:
CREATE TABLE items (
  id SERIAL PRIMARY KEY,
  embedding vector(1536)
);

-- Similarity search
SELECT * FROM items ORDER BY embedding <-> '[...]' LIMIT 10;
```

## Redis Database Allocation

Redis has 16 databases (0-15). Docker-local allocates 3 per project:

| Project | Cache DB | Session DB | Queue DB |
|---------|----------|------------|----------|
| 1st project | 0 | 1 | 2 |
| 2nd project | 3 | 4 | 5 |
| 3rd project | 6 | 7 | 8 |
| 4th project | 9 | 10 | 11 |
| 5th project | 12 | 13 | 14 |

**Check Redis usage:**
```bash
# Connect to Redis
docker-local db:redis

# List all keys in current DB
KEYS *

# Switch databases
SELECT 0
SELECT 3

# Count keys per database
INFO keyspace
```

## Database Troubleshooting

### Cannot Connect to Database

```bash
# Check if container is running
docker-local status

# Check database logs
docker-local logs mysql
docker-local logs postgres

# Test connection
docker exec mysql mysqladmin ping -h localhost -u root -psecret
docker exec postgres pg_isready -U laravel
```

### Permission Denied

```bash
# MySQL - grant privileges
docker exec mysql mysql -u root -psecret -e "GRANT ALL ON myapp.* TO 'laravel'@'%';"

# PostgreSQL - check ownership
docker exec postgres psql -U laravel -c "\l"
```

### Database Not Found

```bash
# List existing databases
# MySQL
docker exec mysql mysql -u root -psecret -e "SHOW DATABASES;"

# PostgreSQL
docker exec postgres psql -U laravel -c "\l"

# Create missing database
docker-local db:create myapp
```

### Reset Database

```bash
# Drop and recreate
# MySQL
docker exec mysql mysql -u root -psecret -e "DROP DATABASE myapp; CREATE DATABASE myapp;"

# PostgreSQL
docker exec postgres psql -U laravel -c "DROP DATABASE myapp; CREATE DATABASE myapp;"

# Then migrate
docker-local db:fresh
```

## Useful SQL Commands

### MySQL
```sql
-- Show databases
SHOW DATABASES;

-- Show tables
USE myapp;
SHOW TABLES;

-- Show table structure
DESCRIBE users;

-- Export specific table
docker exec mysql mysqldump -u laravel -psecret myapp users > users.sql
```

### PostgreSQL
```sql
-- List databases
\l

-- Connect to database
\c myapp

-- List tables
\dt

-- Describe table
\d users

-- Show running queries
SELECT * FROM pg_stat_activity;
```

### Redis
```bash
# List all keys
KEYS *

# Get key type
TYPE mykey

# Get string value
GET mykey

# Get hash
HGETALL myhash

# Clear current database
FLUSHDB

# Clear all databases (careful!)
FLUSHALL

# Monitor commands in real-time
MONITOR
```

$ARGUMENTS

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.