utils/sql_drills/README.md
Krzysztof kuhy Rudnicki de7d5d17eb sql_drills: no root shell for learner SQL
Learner SQL piped into the mysql client could run `\! id` as container
root and read every DB. Now: --binary-mode (client commands error out),
a refused-backslash-line guard, learner exec as uid 65534, and a random
root password (0600 file, via env, adopted live on a legacy container).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWYGW5NZL5uVpnqmNKo
2026-11-02 16:05:59 +01:00

391 B

SQL drill engine (MySQL 8.0.33 + PostgreSQL 18.6, one container each): import sql_drills as sd. Drills: sd.run(id, sql, dialect). LeetCode examples: sd.run_problem(slug_or_statement, sql, dialect). Data: $SQL_DRILLS_DATA. Install: ./install.sh. Root password: random, ~/.config/sql_drills/root_password (0600); learner SQL runs as a per-run user, client commands (\!) refused.