amjadiqbal/laravel-sql-dashboard
A Laravel package that adds a SQL dashboard to your application, letting you run queries and inspect database results through a simple web interface. Useful for quick data checks, debugging, and lightweight SQL monitoring.
local only. If your roadmap needs per-team/per-row access control or write queries, this package is not the substrate — plan a different architecture rather than a fork.U&"..." escapes) plus privilege-check gaps (PostgreSQL file/replication/signal roles, dblink, foreign-server USAGE, standby superusers, MySQL PROCESS). Treat "expose this dashboard to anyone but local" as a decision requiring a documented DB-role hardening standard, not a config flag.GET_LOCK locks outlive a rolled-back transaction; v0.1.1 releases them after each query. Prior versions could leak session locks — relevant if you point this at a pooled production connection.Consider adoption when:
app()->environment('local') gate until you have consciously designed the surrounding access control.SUPER/FILE/PROCESS on MySQL, no pg_read_server_files/pg_write_server_files/pg_execute_server_program/pg_signal_backend membership, no dblink/foreign-server USAGE, non-superuser, on PostgreSQL. The package checks these, but your DB grants are the actual control.Look elsewhere when:
To executives: This is a small, self-hosted internal tool that lets trusted staff query databases and set up alerting without going through engineering each time. It is cheap to adopt and cheap to remove. The tradeoff is that it is early-stage software (v0.1.x) that runs SQL, so it is security-sensitive by nature and must stay behind our network boundary and a restricted database account. The just-published v0.1.1 is a security patch — it closes a way to sneak dangerous database functions past the built-in deny-list and tightens which database privileges are acceptable. That is a good sign (the project reviews and fixes its own guardrails) and a warning (the guardrails are heuristics, not a sandbox).
To engineering: Adopt it as an internal read-only console, not as a platform. Concretely: pin the version, upgrade to v0.1.1 immediately if 0.1.0 is anywhere, keep the default local-only gate until you have designed access control, and provision a dedicated DB role that satisfies the package's privilege checks rather than relying on them. Two known rough edges to plan around: the edit gate is coarse (anyone who can edit can delete shared queries, dashboards and checks), and Slack alerting has only been exercised against a faked HTTP client — validate it against a real workspace before promising it to anyone. If we later need per-team permissions, per-row filtering or write access, that is a new design, not a config change.
To security/ops: The stated safety model is a tokenizer-based deny-list plus connection privilege checks plus (on SQLite with PHP 8.5) the authorizer in read-only mode. Treat the deny-list as defense-in-depth over database grants, not as the boundary. v0.1.1 also fixes leaked session locks — PostgreSQL advisory locks and MySQL GET_LOCK survive transaction rollback — so pooled production connections should be re-tested if we had run 0.1.0.
How can I help you explore Laravel packages today?