mirror of
https://github.com/kuhyx/utils.git
synced 2026-11-10 21:07:15 +01:00
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 |
||
|---|---|---|
| .. | ||
| scripts | ||
| sql_drills | ||
| .pre-commit-config.yaml | ||
| install.sh | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
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.