MySQL, phpMyAdmin · 5 min read · Jan 29, 2026
Gestire più server MySQL da un'installazione di phpMyAdmin (utilizzando la crittografia SSL) - Pagina 2
3 Configurare phpMyAdmin
local.example.com:
Prima di procedere con la configurazione di phpMyAdmin, verifichiamo prima se possiamo davvero connetterci da local.example.com al server MySQL su remote.example.com (tramite una connessione SSL):
mysql --ssl-ca=/etc/mysql/newcerts/ca-cert.pem --ssl-cert=/etc/mysql/newcerts/client-cert.pem --ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -pTi verrà chiesto di inserire la password e, se tutto va bene, ti verrà concesso l’accesso:
root@local:/etc/mysql/newcerts# mysql –ssl-ca=/etc/mysql/newcerts/ca-cert.pem –ssl-cert=/etc/mysql/newcerts/client-cert.pem –ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p
Inserisci la password:
Benvenuto nel monitor MySQL. I comandi terminano con ; o \g.
Il tuo ID di connessione MySQL è 101
Versione del server: 5.5.24-8-log (Debian)
Copyright (c) 2000, 2011, Oracle e/o le sue affiliate. Tutti i diritti riservati.Oracle è un marchio registrato di Oracle Corporation e/o delle sue
affiliate. Altri nomi possono essere marchi dei rispettivi
proprietari.
Digita 'help;' o '\h' per aiuto. Digita '\c' per cancellare l'istruzione di input corrente.mysql>Digita
quit;per uscire dalla shell MySQL.
Ora arriviamo alla parte in cui configuriamo phpMyAdmin - presumo che tu possa già utilizzare phpMyAdmin per connetterti al server MySQL locale, e ora vogliamo configurarlo in modo da poterci connettere anche a remote.example.com utilizzando SSL (nella schermata di accesso di phpMyAdmin, ci sarà un menu a discesa da cui puoi selezionare il server a cui desideri connetterti).
Prima che phpMyAdmin possa utilizzare SSL per comunicare con il server MySQL remoto, dobbiamo modificare un po’ le sue sorgenti - apri mysqli.dbi.lib.php (su Debian e Ubuntu, è /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php se hai installato phpMyAdmin tramite apt):
vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.phpTrova la seguente sezione…
| | [...] /* Abilita SSL opzionalmente */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
… e modificalo come segue:
| | [...] /* Abilita SSL opzionalmente */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { mysqli_ssl_set($link, $GLOBALS['cfg']['Server']['key'], $GLOBALS['cfg']['Server']['cert'], $GLOBALS['cfg']['Server']['ca'], $GLOBALS['cfg']['Server']['capath'], $GLOBALS['cfg']['Server']['cipher']); $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
Successivamente, apri config.inc.php - se sei su Debian/Ubuntu e hai installato phpMyAdmin tramite apt, è /etc/phpmyadmin/config.inc.php:
vi /etc/phpmyadmin/config.inc.php Trova la seguente sezione:
| | [...] /* Configura secondo dbconfig-common se abilitato */ if (!empty($dbname)) { /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opzionale: Utente per funzionalità avanzate */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opzionale: Funzionalità avanzate di phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Decommenta quanto segue per abilitare l'accesso a account senza password, * dopo aver preso nota dei rischi per la sicurezza associati. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Passa al server successivo per il resto della configurazione */ $i++; } [...] | |
Aggiungi la seguente sezione sotto di essa per localhost (= local.example.com):
| | [...] /* localhost.example.com */ /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
(Nella riga $cfg[‘Servers’][$i][‘hide_db’] puoi specificare tutti i database che non vuoi visualizzare in phpMyAdmin - come information_schema, performance_schema e test.)
E per remote.example.com, aggiungi la seguente sezione:
| | [...] /* remote.example.com */ /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
Assicurati di utilizzare mysqli in $cfg[‘Servers’][$i][‘extension’], imposta $cfg[‘Servers’][$i][‘ssl’] su true e specifica i file SSL come mostrato. La mia sezione completa dei server appare come segue:
| | [...] /* Configura secondo dbconfig-common se abilitato */ if (!empty($dbname)) { /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opzionale: Utente per funzionalità avanzate */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opzionale: Funzionalità avanzate di phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Decommenta quanto segue per abilitare l'accesso a account senza password, * dopo aver preso nota dei rischi per la sicurezza associati. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Passa al server successivo per il resto della configurazione */ $i++; } /* localhost.example.com */ /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parametri del server */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Seleziona mysqli se il tuo server lo ha */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Fine della configurazione dei server */ [...] | |
Questo è tutto - nella schermata di accesso di phpMyAdmin, ora dovrebbe esserci un menu a discesa da cui puoi selezionare il server MySQL a cui desideri connetterti (localhost o remote.example.com), e se selezioni un server MySQL remoto (come remote.example.com), phpMyAdmin si connetterà ad esso tramite una connessione SSL.
4 Link
phpMyAdmin: http://www.phpmyadmin.net/
MySQL: http://www.mysql.com/
Informazioni sull’autore
Falko Timme è il proprietario di Timme Hosting (hosting web ultra-veloce nginx). È il principale manutentore di HowtoForge (dal 2005) e uno dei core developer di ISPConfig (dal 2000). Ha anche contribuito al libro O’Reilly “Linux System Administration”.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.