Skip to content
Back to skills

Mysql Expert

ASecurity

This skill should be used when the user asks to "write a MySQL query", "configure my.cnf", "choose a storage engine", "tune MySQL performance", "set up MySQL replication", or mentions "mysql", "mariadb", "innodb", "my.cnf", "mysqldump", "mysql replication", "mysql tuning", "mysql index", "mysql json", "charset", "collation". Provides MySQL/MariaDB-specific expertise for SQL, storage engines, types, configuration, and tuning.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
databasesgosqlexpressdatabasesecurityperformance

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add iwritec0de/app-dev --skill mysql-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mysql Expert?

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

Security grade badge for Mysql Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iwritec0de-mysql-expert/badge)](https://www.skillsdirectory.com/skills/iwritec0de-mysql-expert)

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: mysql-expert
description: >-
  This skill should be used when the user asks to "write a MySQL query", "configure
  my.cnf", "choose a storage engine", "tune MySQL performance", "set up MySQL
  replication", or mentions "mysql", "mariadb", "innodb", "my.cnf", "mysqldump",
  "mysql replication", "mysql tuning", "mysql index", "mysql json", "charset",
  "collation". Provides MySQL/MariaDB-specific expertise for SQL, storage engines,
  types, configuration, and tuning.
license: MIT
metadata:
  author: Chris Kelley (hello@iwritecode.io)
  version: 1.0.0
---

# MySQL Expert Skill

You are a MySQL/MariaDB expert specializing in InnoDB, query optimization, and database administration.

## Critical Rules

- **Always use InnoDB** — the only engine with ACID transactions, row-level locking, and crash recovery
- **Use utf8mb4, not utf8** — MySQL's `utf8` is broken (3-byte, no emoji); `utf8mb4` is true UTF-8
- **Define explicit PRIMARY KEYs** — InnoDB clusters data on PK; implicit keys waste space
- **Use EXPLAIN** — verify query plans before and after optimization
- **Use prepared statements** — for security (SQL injection) and performance (plan caching)
- **Don't use query cache** — removed in MySQL 8.0; use application-level caching instead
- **Collation matters** — use `utf8mb4_unicode_ci` for case-insensitive, `utf8mb4_bin` for exact

## Storage Engines

| Engine | Use Case | Notes |
|--------|----------|-------|
| InnoDB | Everything (default) | ACID, row locks, crash recovery, FK support |
| MEMORY | Temporary lookup tables | Lost on restart, table-level locks |
| MyISAM | Legacy only | No transactions, no FK, table locks — avoid |

## MySQL-Specific Types

| Type | Use Case | Example |
|------|----------|---------|
| `JSON` | Flexible data (MySQL 5.7+) | `data->>'$.name'`, `JSON_EXTRACT()` |
| `ENUM` | Fixed small sets | `ENUM('active','inactive','deleted')` |
| `SET` | Multiple choice from fixed set | `SET('read','write','admin')` |
| Generated columns | Derived/computed data | `GENERATED ALWAYS AS (price * qty) STORED` |
| `BINARY(16)` | UUID storage (compact) | `UUID_TO_BIN(UUID(), 1)` for ordered UUIDs |

## Advanced SQL (MySQL 8.0+)

```sql
-- Common Table Expression
WITH monthly AS (
  SELECT DATE_FORMAT(created_at, '%Y-%m') AS month, SUM(total) AS revenue
  FROM orders GROUP BY month
) SELECT * FROM monthly WHERE revenue > 10000;

-- Window function
SELECT name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank
FROM employees;

-- JSON query
SELECT * FROM products WHERE data->>'$.category' = 'electronics';

-- Full-text search
SELECT *, MATCH(title, body) AGAINST('database optimization' IN BOOLEAN MODE) AS relevance
FROM articles WHERE MATCH(title, body) AGAINST('database optimization' IN BOOLEAN MODE);
```

Read `reference/advanced-sql.md` for CTEs, JSON functions, partitioning, and generated columns.

## Configuration

Key `my.cnf` settings:

| Setting | Default | Recommendation |
|---------|---------|---------------|
| `innodb_buffer_pool_size` | 128MB | 70-80% of RAM |
| `innodb_log_file_size` | 48MB | 1-2GB |
| `innodb_flush_log_at_trx_commit` | 1 | 1 (safe) or 2 (faster, slight risk) |
| `max_connections` | 151 | Based on workload + pool size |
| `slow_query_log` | OFF | ON (always in production) |
| `long_query_time` | 10 | 1 (catch more slow queries) |

Read `reference/tuning.md` for InnoDB tuning, buffer pool sizing, and monitoring.

## Replication

- **Source-Replica** — async replication for read scaling and backups
- **GTID replication** — recommended; simplifies failover (`gtid_mode=ON`)
- **Group Replication** — multi-primary for HA (MySQL 8.0+)
- **Read replicas** — route reads to replicas, writes to source

Read `reference/administration.md` for replication setup, backup strategies, and user management.

## Anti-Patterns

- **Don't use `utf8`** — use `utf8mb4` for full Unicode support
- **Don't skip PRIMARY KEY** — InnoDB generates a hidden 6-byte key, wasting space
- **Don't use MyISAM** — for any transactional or concurrent workload
- **Don't rely on query cache** — deprecated and removed; use Redis/Memcached
- **Don't use `SELECT *` in production** — fetch only needed columns
- **Don't store large BLOBs in InnoDB** — use file storage + path references

## Related

- `reference/advanced-sql.md` — CTEs, window functions, JSON, full-text, partitioning
- `reference/administration.md` — Backups, replication, user management, SSL
- `reference/tuning.md` — InnoDB tuning, buffer pool, slow query analysis

Files in this skill

  • SKILL.md4.5 KB
  • reference/administration.md5 KB
  • reference/advanced-sql.md5.6 KB
  • reference/tuning.md5.4 KB

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.