1 04/11/2026 9 min

Adminer è una singola pagina PHP che permette di amministrare database MySQL, MariaDB, PostgreSQL, SQLite e altri motori supportati senza installare un pannello pesante. Su Ubuntu 22.04 il punto non è tanto “farlo partire”, quanto integrarlo in modo pulito nel web server, con PHP correttamente abilitato e con qualche precauzione minima di sicurezza. In pratica: meglio poche dipendenze, un alias chiaro, accesso limitato e un controllo rapido del comportamento prima di esporlo su Internet.

Qui sotto trovi una procedura lineare per Apache e, dove utile, una variante per Nginx. L’obiettivo è arrivare a un’installazione funzionante, verificabile e reversibile, senza introdurre configurazioni fragili o eccessive.

Prerequisiti su Ubuntu 22.04

Prima di tutto serve un web server già attivo e un runtime PHP funzionante. Se usi Apache, la combinazione più comune è Apache + PHP-FPM oppure Apache + mod_php. Se usi Nginx, in pratica serve PHP-FPM. Adminer non richiede database locale sul server: si collega a un DB remoto o locale tramite la schermata di login.

Per verificare lo stato del sistema, controlla almeno questi elementi:

php -v

Output atteso: una versione PHP installata, idealmente 8.1 o compatibile con i pacchetti del sistema. Se il comando non esiste, prima va installato PHP; se esiste ma il web server non lo interpreta, il problema è nel collegamento tra server e runtime.

Se vuoi una verifica più completa, controlla anche il servizio del web server:

systemctl status apache2
systemctl status nginx

Non devi avere entrambi per forza: il comando utile è quello coerente con il tuo stack.

Installazione con pacchetto Ubuntu

La via più pulita, quando disponibile nei repository, è installare Adminer come pacchetto. Su Ubuntu questo evita download manuali e ti lascia un file PHP già collocato in una posizione standard.

sudo apt update
sudo apt install adminer

In molte installazioni il pacchetto deposita il file in un percorso come /usr/share/adminer/adminer.php oppure in una directory equivalente gestita dal pacchetto. La posizione esatta conviene verificarla con il database dei file installati:

dpkg -L adminer | grep -E 'adminer.*php$'

Se il pacchetto non è disponibile nel tuo mirror o preferisci una versione specifica, puoi usare il file PHP standalone scaricato dal progetto. In quel caso però devi occuparti tu del posizionamento, dei permessi e degli aggiornamenti. In un ambiente di produzione, il pacchetto di sistema resta di solito la scelta più ordinata.

Pubblicazione con Apache

Con Apache, la soluzione più semplice è creare un alias dedicato. In questo modo non devi spostare file dentro la document root principale e puoi mantenere Adminer in un percorso separato, più facile da rimuovere o disattivare in seguito.

Supponendo che il file sia disponibile in /usr/share/adminer/adminer.php, crea una configurazione dedicata, ad esempio /etc/apache2/conf-available/adminer.conf:

<IfModule mod_alias.c> Alias /adminer /usr/share/adminer/adminer.php <Directory /usr/share/adminer> Require all granted Options FollowSymLinks AllowOverride None </Directory>
</IfModule>

Abilita la configurazione e ricarica Apache:

sudo a2enconf adminer
sudo systemctl reload apache2

A questo punto verifica che la pagina risponda:

curl -I http://localhost/adminer

Output atteso: HTTP/1.1 200 OK oppure un redirect coerente con la tua configurazione. Se ottieni 404, il percorso del file o l’alias non corrispondono. Se ottieni 403, il blocco <Directory> o i permessi non consentono l’accesso.

Se preferisci usare una directory dedicata sotto la document root, puoi anche creare un link simbolico o copiare il file, ma l’alias resta più pulito: separa la logica applicativa dal contenuto del sito e riduce il rischio di confondere Adminer con il resto dell’hosting.

Pubblicazione con Nginx e PHP-FPM

Con Nginx l’approccio cambia leggermente perché il server web non esegue PHP da solo. Devi quindi creare una location che inoltri il file a PHP-FPM. La soluzione più semplice è esporre Adminer in una sottopercorso dedicato, ad esempio /adminer, oppure in un vhost separato.

Un esempio pratico, da adattare al tuo sito:

location = /adminer { alias /usr/share/adminer/adminer.php;
} location ~ ^/adminer$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME /usr/share/adminer/adminer.php; fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Qui il dettaglio importante è il socket di PHP-FPM: su Ubuntu 22.04 può essere /run/php/php8.1-fpm.sock, ma va verificato nella tua installazione. Se il socket non coincide, Nginx risponde male o non passa la richiesta al runtime.

Verifica la configurazione e ricarica Nginx:

sudo nginx -t
sudo systemctl reload nginx

Se il test fallisce, non ricaricare nulla: correggi prima la sintassi. È il classico punto in cui una modifica minima può interrompere il sito se si forza il reload senza controllo.

Accesso sicuro: limitare chi può vedere Adminer

Adminer è comodo proprio perché espone una superficie di amministrazione unica. Per questo non conviene lasciarlo aperto a chiunque. Anche se il login richiede credenziali del database, l’endpoint va comunque protetto almeno con una restrizione di rete o con un controllo aggiuntivo lato web server.

Le opzioni più sensate sono tre, in ordine di praticità:

  • limitare l’accesso a un IP o a una subnet di amministrazione;
  • proteggere l’URL con autenticazione HTTP aggiuntiva;
  • esporlo solo su VPN o rete interna.
  • Su Apache, puoi restringere l’accesso a un IP specifico così:

    <Directory /usr/share/adminer> Require ip 203.0.113.10
    </Directory>

    Su Nginx, la logica equivalente è:

    location = /adminer { allow 203.0.113.10; deny all;
    }

    Se il tuo IP cambia spesso, l’accesso per IP può diventare scomodo. In quel caso è spesso più robusto metterlo dietro VPN o limitare il vhost a una rete privata. Evita di lasciare Adminer esposto su Internet senza almeno una barriera esterna: il login del database non è un sostituto del controllo di esposizione.

    Configurazione PHP utile per evitare errori banali

    Adminer in sé è leggero, ma dipende dai moduli PHP corretti. Se manca il supporto al database che ti interessa, la schermata di login può caricarsi ma poi fallire quando tenti la connessione.

    Per MySQL/MariaDB, in genere servono i moduli comuni del pacchetto PHP. Controlla che siano presenti:

    php -m | grep -E 'mysqli|pdo_mysql'

    Se non compare nulla, installa il modulo corrispondente alla tua versione PHP. Su Ubuntu 22.04 il nome pacchetto può variare in base alla release installata, ma la logica è sempre la stessa: il modulo deve essere attivo nel runtime usato dal web server, non solo nella CLI.

    Se usi PHP-FPM, dopo l’installazione del modulo riavvia il servizio relativo, non solo Apache o Nginx:

    sudo systemctl restart php8.1-fpm

    Questo passaggio è spesso trascurato: la CLI di PHP può mostrare il modulo installato, ma il pool FPM continua a usare la vecchia configurazione finché non viene riavviato.

    Verifica funzionale con un database reale

    Una volta che la pagina è raggiungibile, la vera verifica è il login verso un database reale. Non basta vedere la schermata iniziale: devi controllare che il driver corretto, l’host e le credenziali funzionino davvero.

    Per un test rapido, prepara i dati minimi del tuo server DB: host, porta, nome utente, password e nome del database. Se il database è locale, spesso l’host è localhost o 127.0.0.1; se è remoto, verifica anche la reachability dalla macchina Ubuntu:

    nc -vz db.example.local 3306

    Output atteso: connessione riuscita sulla porta del database. Se la porta è chiusa o filtrata, Adminer non può risolvere il problema: devi prima sistemare rete, firewall o policy del server DB.

    Se il login fallisce ma la porta risponde, le cause più comuni sono credenziali errate, plugin di autenticazione non compatibile o permessi lato database. In quel caso Adminer è utile perché ti mostra subito l’errore di connessione senza passaggi intermedi.

    Hardening minimo consigliato

    Adminer non è un’applicazione da blindare con dieci livelli di complessità. Basta poco, ma quel poco va fatto bene. La priorità è non lasciarlo esposto indiscriminatamente e non conservarlo in una posizione confusa dentro il sito pubblico.

  • Usa un percorso dedicato, ad esempio /adminer, non una directory generica del sito.
  • Limita l’accesso per IP, subnet o VPN.
  • Evita di salvare credenziali nel browser su macchine condivise.
  • Se possibile, usa HTTPS obbligatorio sul vhost che lo espone.
  • Tieni aggiornato il pacchetto con gli update di sistema.
  • Se Adminer serve solo per manutenzione occasionale, valuta anche di abilitarlo temporaneamente e poi disattivarlo. In molti casi è la scelta più prudente: meno superficie esposta, meno manutenzione continua, meno possibilità di dimenticarselo online.

    Disinstallazione e rollback

    Il vantaggio di Adminer è che il rollback è semplice. Se hai usato il pacchetto e un alias dedicato, puoi tornare indietro in pochi minuti senza toccare il resto del sito.

    Su Apache, disabilita la configurazione e ricarica il servizio:

    sudo a2disconf adminer
    sudo systemctl reload apache2

    Se hai creato un file dedicato in /etc/apache2/conf-available/adminer.conf, puoi conservarlo come backup o rimuoverlo dopo aver verificato che l’endpoint non risponda più. Il controllo finale è semplice:

    curl -I http://localhost/adminer

    Output atteso dopo il rollback: 404 o 403, a seconda di come hai rimosso l’esposizione. Se risponde ancora 200, c’è un’altra regola attiva, un alias residuo o una directory pubblica che continua a servire il file.

    Su Nginx, il rollback consiste nel rimuovere il blocco di location o il vhost dedicato, poi testare la configurazione e ricaricare. Anche qui il punto chiave è verificare prima di applicare:

    sudo nginx -t
    sudo systemctl reload nginx

    Se hai installato Adminer via pacchetto e non ti serve più, puoi rimuoverlo con il gestore pacchetti. Fallo solo dopo aver rimosso l’esposizione web, così eviti di lasciare file residui pubblicabili in futuro.

    Quando conviene usare Adminer invece di phpMyAdmin

    La scelta non è ideologica. Adminer conviene quando vuoi una singola pagina leggera, facile da aggiornare e da togliere, oppure quando devi gestire più motori di database senza installare pannelli separati. È molto comodo per ambienti di staging, server di manutenzione e interventi rapidi su infrastrutture già presidiate da altri strumenti.

    phpMyAdmin resta più ricco in alcune situazioni, ma anche più pesante e più articolato da mantenere. Se ti serve solo una console essenziale per operazioni amministrative, Adminer spesso è la scelta più pratica. Su Ubuntu 22.04, proprio perché si integra con poco, è uno strumento che vale la pena tenere nel cassetto: non sempre acceso, ma pronto quando serve.