Come Installare phpMyAdmin su Ubuntu

phpMyAdmin è uno strumento scritto in PHP utilizzato per la gestione di un database MySQL direttamente da un'interfaccia web. In questa guida vedremo come installare phpMyAdmin per gestire i database su un server Ubuntu.

Avatar di gbfactory
gbfactory 8 Dicembre 2021

Introduzione

phpMyAdmin è uno strumento scritto in PHP utilizzato per la gestione di un database MySQL direttamente da un'interfaccia web. In questa guida vedremo come installare phpMyAdmin per gestire i database su un server Ubuntu.

Prerequisiti

Per seguire questa guida avrete ovviamente bisogno di un server con installato Ubuntu, con un utente non-root con i privilegi amministrativi attraverso il comando sudo e anche un firewall di base con ufw. Potete seguire la guida sul setup iniziale di un Server Ubuntu.

Sul server dovrà essere installato lo stack LAMP (Linux, Apache, MySQL e PHP).

Come installare phpMyAdmin

Per installare phpMyAdmin direttamente dalle repository di Ubuntu possiamo utilizzare APT installando il pacchetto phpmyadmin.

Insieme a questo pacchetto è raccomandato installare varie estensioni PHP per abilitare alcune funzioni e per aumentare le prestazioni. Le estensioni in questione sono:

  • php-mbstring: un modulo per gestire le stringhe che non sono in caratteri ASCII e per cambiare la codifica delle stringhe.
  • php-zip: consente di caricare i file .zip in phpMyAdmin.
  • php-gd: abilitare il supporto per la Libreria Grafica GD.
  • php-json: aggiunge a PHP il supporto per la serializzazione JSON.
  • php-curl: consente a PHP di interagire con vari tipi di server attraverso vari protocolli di comunicazione.

Con il seguente comando andremo a installare tutte le estensioni che abbiamo appena elencato e anche il pacchetto di phpMyAdmin. Durante l'installazione di phpMyAdmin dovrete effettuare alcune scelte per configurare il software correttamente. Successivamente vedremo come fare.

sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

Durante l'installazione, quando vi verrà scelto di scegliere il server, selezionate l'opzione apache2. Per selezionare l'opzione desiderata doveste prima evidenziarla (già fatto di default) e poi premere SPAZIO per selezionarla.

Quando viene richiesto se utilizzare dbconfig-common per configurare il database, selezionate l'opzione Yes.

Infine dovrete scegliere una password per l'utente MySQL dell'installazione di phpMyAdmin.

Attenzione: se durante l'installazione di MySQL avete deciso di abilitare il plugin Validate Password, durante la scelta della password per l'utente di phpmyadmin riceverete un errore.

Per risolvere questo problema dovrete annullare l'installazione (abort) ed entrare nel prompt di MySQL:

sudo mysql

Se invece hai una password abilitata per l'utente root di MySQL, puoi utilizzare questo comando e poi inserire la password quando richiesto:

mysql -u root -p

Dal prompt ora potrai eseguire il seguente comando per disabilitare il plugin Validate Password. Tieni presente che questo comando non disinstallerà effettivamente il plugin, ma impedirà solamente che venga caricato sul server MySQL:

UNINSTALL COMPONENT "file://component_validate_password";

A questo punto possiamo uscire dal prompt di MySQL:

exit

E infine installare nuovamente il pacchetto di phpMyAdmin per tornare all'installazione, che questa volta dovrebbe funzionare correttamente:

sudo apt install phpmyadmin

Terminata l'installazione puoi tornare nuovamente nel prompt di MySQL con uno dei due comandi visti in precedenza e riabilitare il plugin Validate Password con il seguente comando:

INSTALL COMPONENT "file://component_validate_password";

L'installazione avrà aggiunto i file di configurazione Apache di phpMyAdmin nella directory /etc/apache2/conf-enabled/, dove verranno letti automaticamente.

L'ultima cosa che resta da fare è abilitare l'estensione di PHP mbstring con il seguente comando:

sudo phpenmod mbstring

Una volta aver fatto ciò possiamo riavviare Apache per rendere effettivi i cambiamenti:

sudo systemctl restart apache2

A questo punto phpMyAdmin sarà stato installato e funzionerà con Apache. Tuttavia, prima di iniziare ad usare phpMyAdmin dobbiamo assicurarci che gli utenti MySQL abbiano tutti i permessi richiesti per interagire con il programma.

Autenticazione e Privilegi Utente

Quando installiamo phpMyAdmin sul nostro sistema, viene automaticamente creato un utente per il database MySQL chiamato phpmyadmin che esegue la maggior parte delle operazioni legate al programma. Invece di accedere all'interfaccia web attraverso questo utente con la password che abbiamo scelto in fase di installazione, è meglio utilizzare l'account root di MySQL o ancora meglio un utente dedicato interamente alla gestione del database attraverso l'interfaccia web.

Impostare una password per l'account root di MySQL

Le versioni più recenti di MySQL utilizzano come metodo di autenticazione per l'account root il plugin auth_socket al posto di una normale password. Questo consente di avere una maggiore sicurezza, ma rende le cose complicate quando vogliamo accedere al root da servizi esterni, come phpMyAdmin.

Per poter accedere a phpMyAdmin con l'utente root, dobbiamo come prima cosa modificare il metodo di autenticazione. Per farlo, apriamo il terminale di MySQL:

sudo mysql

Adesso, per verificare quello che abbiamo appena detto, possiamo vedere i metodi di autenticazione dei vari utenti con la seguente query:

SELECT user, authentication_string, plugin, host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$VLZq)R_Sg;j1uqlQ1LMRdvC0x1f/Q86wHfLOyXoEmEyc1qSOgM8O/cC6C | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | $A$005$qF.Ev5%;lX7~4 }MBLW/s1gSyREruV19cVbz5MhvyEPrfU6teAoPD9S8R71 | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

Nell'output vediamo che l'utente root utilizza il plugin auth_socket. Per modificare il metodo di autenticazione e usare una password, possiamo eseguire il seguente comando. Assicurati di inserire al posto di la_tua_password una password sicura di tua scelta.

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'la_tua_password';

Attenzione: il comando di alterazione appena indicato imposta come metodo di autenticazione per l'utente root il plugin caching_sha2_password. Questo plugin consente di avere una cifratura della password più sicura, tuttavia non funziona correttamente con tutte le versioni di PHP.

Per questo, se riscontrate alcuni errori durante l'accesso a phpMyAdmin con questo sistema, è possibile che la causa sia questo plugin. In questo caso è consigliabile tornare al vecchio mysql_native_password, ancora molto utilizzato.

Per modificare in questo senso il metodo di autenticazione dell'utente root possiamo eseguire il seguente comando:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'la_mia_password';

Adesso possiamo eseguire nuovamente il comando di prima e assicurarci che il plugin sia stato modificato con successo:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$VLZq)R_Sg;j1uqlQ1LMRdvC0x1f/Q86wHfLOyXoEmEyc1qSOgM8O/cC6C | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | $A$005$qF.Ev5%;lX7~4 }MBLW/s1gSyREruV19cVbz5MhvyEPrfU6teAoPD9S8R71 | caching_sha2_password | localhost |
| root             | $A$005$   2{.Yf[8QU646mhZwyQdxtrm8DrNUi6ph3wRl4rWSkm.tihwuL1aPWaoY9 | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

Come potete vedere dall'output, ora l'utente root utilizza un metodo di autenticazione tramite password. Questo ci consente ora di accedere a phpMyAdmin con l'utente root e la password scelta in precedenza.

Configurare un utente MySQL dedicato

Al posto di utilizzare l'utente root, è possibile anche creare un utente dedicato solamente alla gestione del database con phpMyAdmin. Per poterlo creare, apriamo intanto il prompt di MySQL:

sudo mysql

Se è stata impostata una password per l'utente root, dovrai accedere a MySQL attraverso il seguente comando, e poi inserire la password quando richiesto:

mysql -u root -p

A questo punto possiamo direttamente creare un nuovo utente, ricordandoci di sostituire nome_utente con il nome che desideriamo dare al nuovo account e la_mia_password con una password sicura di nostra scelta:

CREATE USER 'nome_utente'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'la_mia_password';

Attenzione: in base alla versione di PHP installata sul sistema, potrebbe essere necessario tornare al vecchio plugin di autenticazione. Per farlo è sufficiente sostituire caching_sha2_password con mysql_native_password:

CREATE USER 'nome_utente'@'localhost' IDENTIFIED WITH mysql_native_password BY 'la_mia_password';

Dopo aver creato l'utente, è arrivato il momento di assegnare i permessi. Possiamo, per esempio, assegnare all'utente tutti i permessi su tutti database e su tutte le tabelle, così come potremmo decidere di assegnare solamente alcuni permessi in modo più specifico:

GRANT ALL PRIVILEGES ON *.* TO 'nome_utente'@'localhost' WITH GRANT OPTION;

Infine usciamo dal prompt di MySQL:

exit

A questo punto possiamo accedere all'interfaccia web di phpMyAdmin andando sul dominio o IP pubblico del server e inserendo alla fine /phpmyadmin.

https://il_tuo_dominio_o_ip/phpmyadmin
Schermata di Login di phpMyAdmin

Qui possiamo accedere come root o come l'utente dedicato che abbiamo configurato in precedenza.

Una volta eseguito l'accesso vedremo l'interfaccia web, che sarà più o meno così:

Interfaccia web principale di phpMyAdmin

Conclusione

Una volta terminata questa guida dovresti avere l'interfaccia di phpMyAdmin installata e configurata correttamente sul tuo server con Ubuntu. Ora puoi creare database, utenti, tabelle e moltissime altre cose direttamente dal tuo browser!