phpMyAdmin
Vinza Store phpMyAdmin
phpMyAdmin
Free Database
phpmyadminmysqlmariadbdatabasesqladmin
Get this app
Free
Available to all users. No license needed.

Installs phpMyAdmin and serves it through PHP's built-in web server, managed as a phpmyadmin-php-server systemd unit running as www-data. The plugin writes config.inc.php itself — including a freshly generated blowfish and SSO secret — and exposes actions to start, stop and restart the PHP server, regenerate the config, and change the listening port. Changing the port is handled end to end: the systemd unit is rewritten (bound to localhost when proxied, to all interfaces when exposed directly), systemd is reloaded, and either the reverse-proxy config is rewritten or the UFW rule is moved to the new port.

Access normally goes through a reverse proxy at /phpmyadmin/, and the plugin can write that proxy config for nginx, Apache2 or OpenLiteSpeed; a web_server_changed hook re-applies it after a web server swap so the path does not start 404ing. A separate action serves /phpmyadmin/ over trusted HTTPS by reusing the panel host's Let's Encrypt certificate — on nginx it writes a dedicated 443 vhost, validates it with nginx -t, rolls back on failure, and refuses to run if the panel host is also a hosted website. Panel users can reach phpMyAdmin through signon (SSO) links scoped to databases they own; non-admin tenants only get a read-only status view, with server control, config and port settings left to admins.

Every privileged step — config writes, systemd files, service control, firewall rules — goes through the root agent rather than sudo. The plugin manages the phpMyAdmin installation and its proxy; the actual database work happens inside phpMyAdmin itself, and it requires a working MySQL or MariaDB server and a PHP CLI binary on the host.

Min Panel Version
1.0.0
Platform
Ubuntu 20.04+ / 22.04+ / 24.04+
License
Free — no key needed
Hooks
web_server_changed
Permissions
databases.manage
VinzaPanel handles installation automatically via the Vinza Store. Make sure the panel agent has internet access to download dependencies.
1.0.17 — New icon in the shared flat style. 1.0.16 — Saving the upload limit before phpMyAdmin is installed is refused instead of writing a service unit for it. 1.0.15 — Upload limit for imports, 50 MB by default and adjustable on the phpMyAdmin page (1–2048 MB). It used to be 1 MB through nginx (no request-body limit was set) and 2 MB in PHP (the server read the CLI php.ini). The limit is applied to the PHP server and to the nginx proxy, and installs updated to this version get the 50 MB default. 1.0.14 — When the panel is opened through another hostname than its server domain (PANEL_PUBLIC_URL behind your own proxy), the phpMyAdmin buttons and the database sign-on now open it on the server domain, where the web-apps server serves /phpmyadmin/, instead of a 404 on the panel's hostname. 1.0.13 — Access control for /phpmyadmin/: an IP allowlist (addresses or CIDR ranges) and an optional HTTP Basic-Auth password, applied on nginx, Apache and OpenLiteSpeed; sign-on links keep working. One-click upgrade to the latest phpMyAdmin release for the server's PHP, with the installed and latest versions shown: the download is checked against the official SHA-256 file and GPG signature, config.inc.php is kept, and the replaced version stays for a rollback. 1.0.12 — PHP extensions are installed for the PHP already in use, and the system `php` is put back if apt moved it (unversioned packages pulled the newest PHP from the Ondrej/Sury repository). 1.0.11 — get_access works from the action API (no request: host from the panel); shared web-apps server no longer adds a second 'server_name _' on :80 (nginx 'conflicting server name' warning). 1.0.10 — Sign-on links are single use: a token that was already redeemed (for example one copied from an access log when phpMyAdmin is served over plain HTTP) is refused instead of logging in again within its 60 seconds. 1.0.9 — OpenLiteSpeed: updating phpMyAdmin no longer breaks sign-on (the update wiped the link that maps /phpmyadmin/ onto its files, so SSO landed back on the panel); installs already hit by it are repaired the first time a link is built. 1.0.8 — OpenLiteSpeed: /phpmyadmin/ is detected again where the panel cannot read /usr/local/lsws/conf (lsadm-only), so SSO links no longer fall back to the localhost-only port. 1.0.4 — Shares the updated web-app proxy helper with Mail Server 1.2.0 (configurable webmail path); no change to phpMyAdmin itself. 1.0.3 — phpMyAdmin no longer fails with "Error code: 200 OK (rejected)": its sign-on URL is now fixed (the panel's address) instead of taken from the Referer, which logged it out on the first AJAX request. Existing installs are corrected automatically. 1.1.6 — Reverse-proxy detection now recognises the shared web-apps server (snippet layout), fixing wrong Open-URL and bind decisions on nginx installs. /phpmyadmin/ is served over HTTPS whenever the proxy exposes a TLS :443 listener, so the SSO hand-off and SQL traffic are encrypted (secure same-scheme POST instead of the cleartext GET fallback). Regenerated config.inc.php now keeps the scheme-aware PmaAbsoluteUri that install.sh sets (correct sub-path links, no redirect loops), and changing the port rewrites the shared nginx snippet. New "Enable trusted HTTPS" action serves /phpmyadmin/ with the panel domain's Let's Encrypt certificate (no browser warning): on nginx it writes a dedicated 443 vhost — validated with nginx -t and rolled back on failure, and guarded so it never shadows a hosted website; on apache the global ProxyPass already rides the host's SSL vhost. 1.0.1 — /phpmyadmin/ moved to a shared nginx default server. 1.0.0 — Initial release.

Use VinzaPanel's REST API to download and install this app programmatically.

Download app files
HTTP
POST /plugins/api/download/phpmyadmin/
Content-Type: application/json

{
  "panel_version": "1.0.0"
}
Example response
JSON
{
  "success": true,
  "plugin_id": "phpmyadmin",
  "version": "1.0.17",
  "download_url": "..."
}