phpMyAdmin è uno strumento gratuito e open source per gestire i server MySQL e MariaDB su un'interfaccia basata sul web. Con phpMyAdmin, puoi creare e gestire database e utenti, eseguire istruzioni SQL, importare ed esportare dati ed eseguire attività di database come creazione, eliminazione, tabelle, colonne, indici, autorizzazioni e molto altro. phpMyAdmin è uno degli strumenti di amministrazione più popolari e più utilizzati, in particolare per i servizi di web hosting.
Caratteristiche
- Fornisce un'interfaccia web semplice e intuitiva.
- Importa dati da CSV e SQL.
- Supporta la maggior parte delle funzionalità di MySQL, tra cui creazione, copia, rilascio, rinomina, rilascio e modifica di database, tabelle, campi e indici.
- Consente di esportare i dati in vari formati come PDF, CSV, SQL, XML e molti altri.
- Gestione di più server.
- Creazione di query complesse utilizzando Query-by-example (QBE).
In questo tutorial, ti mostreremo come installare e proteggere phpMyAdmin su un server CentOS 8.
Requisiti
- Un server che esegue CentOS 8.
- Sul server è configurata una password di root.
Installa il server LAMP
Innanzitutto, dovrai installare Apache, MariaDB, PHP e altre librerie PHP sul tuo server. Puoi installarli tutti con il seguente comando:
dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip
Una volta installati tutti i pacchetti, avvia il servizio Apache e MariaDB e abilita l'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb
Una volta terminato, puoi procedere al passaggio successivo.
Configura MariaDB
Per impostazione predefinita, MariaDB non è protetta. Quindi dovrai prima proteggerlo. Puoi farlo eseguendo lo script mysql_secure_installation:
mysql_secure_installation
Rispondi a tutte le domande come mostrato di seguito:
Set root password? [Y/n] Y New password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Al termine, dovresti vedere il seguente output:
... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
A questo punto, l'installazione di MariaDB è sicura.
Installa phpMyAdmin
Per impostazione predefinita, phpMyAdmin non è disponibile nel repository predefinito di CentOS 8. Quindi, dovrai scaricare l'ultima versione di phpMyAdmin dal loro sito Web ufficiale. Puoi scaricarlo con il seguente comando:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
Una volta scaricato, decomprimi il file scaricato con il seguente comando:
unzip phpMyAdmin-4.9.2-all-languages.zip
Quindi, sposta il contenuto estratto nella directory /usr/share come mostrato di seguito:
mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
Quindi, cambia la directory in /usr/share/phpmyadmin e rinomina il file config.sample.inc.php:
cd /usr/share/phpmyadmin
mv config.sample.inc.php config.inc.php
Quindi, apri il file con il tuo editor di testo preferito come mostrato di seguito:
nano config.inc.php
Modifica la seguente riga:
$cfg['blowfish_secret'] = 'your-secret-password';
Salva e chiudi il file quando hai finito. Quindi, importa create_tables.sql con il seguente comando:
mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Fornisci la tua password di root quando ti viene chiesto di importare la tabella.
Quindi, crea una directory tmp per phpmyadmin e dai i permessi appropriati:
mkdir /usr/share/phpmyadmin/tmp
chown -R apache:apache /usr/share/phpmyadmin
chmod 777 /usr/share/phpmyadmin/tmp
Configura Apache per phpMyAdmin
Successivamente, dovrai creare un file di configurazione dell'host virtuale Apache per phpMyAdmin. Puoi crearlo con il seguente comando:
nano /etc/httpd/conf.d/phpmyadmin.conf
Aggiungi le seguenti righe:
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio Apache con il seguente comando:
systemctl restart httpd
Puoi controllare lo stato dell'Apache con il seguente comando:
systemctl status httpd
Dovresti vedere il seguente output:
? httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d ??php-fpm.conf Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago Docs: man:httpd.service(8) Main PID: 5636 (httpd) Status: "Started, listening on: port 80" Tasks: 213 (limit: 25044) Memory: 28.7M CGroup: /system.slice/httpd.service ??5636 /usr/sbin/httpd -DFOREGROUND ??5639 /usr/sbin/httpd -DFOREGROUND ??5640 /usr/sbin/httpd -DFOREGROUND ??5641 /usr/sbin/httpd -DFOREGROUND ??5642 /usr/sbin/httpd -DFOREGROUND Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server. Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server... Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0> Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80 Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.
Configura SELinux e Firewall
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Quindi dovrai configurare SELinux affinché phpMyAdmin funzioni correttamente.
Innanzitutto, installa il pacchetto policycoreutils-python-utils per gestire un ambiente SELinux con il seguente comando:
dnf install policycoreutils-python-utils
Quindi, abilita l'accesso alla directory /usr/share/phpmyadmin con il seguente comando:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"
Ora passa in rassegna tutti i file nella tua directory phpmyadmin eseguendo il seguente comando:
restorecon -Rv '/usr/share/phpmyadmin/'
Successivamente, dovrai creare una regola firewall per consentire il servizio HTTP da reti esterne. Puoi consentirlo con il seguente comando:
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
phpMyAdmin è ora installato e configurato. Ora è il momento di verificare se funziona o meno.
Apri il tuo browser web e digita l'URL http://your-server-ip/phpmyadmin. Verrai reindirizzato alla seguente pagina:
Proteggi phpMyAdmin
A questo punto, l'istanza di phpMyAdmin funziona correttamente. Tuttavia, proteggere la tua istanza phpMyAdmin dal mondo esterno è un compito importante per te. In questa sezione, ti mostreremo come proteggere la tua istanza phpMyAdmin.
Consenti phpMyAdmin da IP specifico
Innanzitutto, dovrai configurare phpMyAdmin in modo che sia accessibile solo dall'indirizzo IP della tua connessione domestica.
Puoi configurarlo modificando il file /etc/httpd/conf.d/phpmyadmin.conf:
nano /etc/httpd/conf.d/phpmyadmin.conf
Trova le seguenti righe:
<RequireAny> Require all granted </RequireAny>
E sostituiscili con i seguenti:
<RequireAny> Require ip your-home--connection-ip-address Require ip ::1 </RequireAny>
Salva e chiudi il file quando hai finito.
Configura livello aggiuntivo di autenticazione
È una buona idea proteggere con password la tua directory phpmyadmin impostando un'autenticazione di base.
Per farlo, crea un nuovo file di autenticazione usando lo strumento htpasswd come mostrato di seguito:
mkdir /etc/phpmyadmin
htpasswd -c /etc/phpmyadmin/.htpasswd admin
Ti verrà chiesto di fornire la tua password di amministratore come mostrato di seguito:
New password: Re-type new password: Adding password for user admin
Successivamente, dovrai configurare Apache per utilizzare il file .htpasswd. Puoi farlo modificando il file /etc/httpd/conf.d/phpmyadmin.conf.
nano /etc/httpd/conf.d/phpmyadmin.conf
Aggiungi le seguenti righe sotto la riga "AddDefaultCharset UTF-8":
Options +FollowSymLinks +Multiviews +Indexes AllowOverride None AuthType basic AuthName "Authentication Required" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Salva il file e riavvia il servizio Apache per rendere effettive le modifiche:
systemctl restart httpd
Accedi a phpMyAdmin
Ora, la tua istanza phpMyAdmin è protetta con un ulteriore livello di sicurezza. Apri il tuo browser web e digita l'URL http://your-server-ip/phpmyadmin. Ti verrà chiesto di inserire le credenziali di accesso dell'utente precedentemente creato come mostrato di seguito:
Fornisci il nome utente e la password dell'amministratore, quindi fai clic sul pulsante OK. Verrai reindirizzato alla pagina di accesso di phpMyAdmin:
Ora, fornisci le credenziali di accesso dell'utente amministrativo MySQL e fai clic sul pulsante Vai. Dovresti vedere la seguente pagina:
Conclusione
Congratulazioni! hai installato e protetto correttamente phpMyAdmin sul server CentOS 8. Ora puoi creare database, utenti, tabelle e gestirli dall'interfaccia basata sul web. Sentiti libero di chiedermi se hai domande.