Installare MySQL 5.7 su CentOS 7 e Ubuntu 16.04

Scopo e prerequisiti
Scopo: installare e configurare MySQL 5.7 su server CentOS 7 e Ubuntu 16.04. Questa guida è pensata per amministratori di sistema e sviluppatori che vogliono una procedura ripetibile per ambienti di test o produzione leggera.
Prerequisiti:
- Accesso root o sudo sul server.
- Connessione internet per scaricare pacchetti.
- Sistemi target: CentOS 7 o Ubuntu 16.04.
Termine chiave: MySQL — sistema di gestione di database relazionali (RDBMS) open source; LAMP/LEMP — stack software comune.
Important: leggi la sezione Sicurezza prima di esporre MySQL in produzione.
Sommario delle operazioni
- Aggiungere il repository ufficiale MySQL.
- Installare mysql-community-server (MySQL 5.7).
- Avviare il servizio e abilitarne l’autostart.
- Reimpostare o confermare la password root (differs per distro).
- Test: creare database e utente, verificare accesso.
Aggiungere il repository MySQL
MySQL fornisce pacchetti repository per RPM (CentOS) e DEB (Ubuntu). Aggiungere il repository ufficiale permette di installare la versione stabile più recente disponibile per MySQL 5.7.
Per CentOS 7 esegui:
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Ti verrà chiesto di confermare l’aggiunta del pacchetto: digita “y” e premi Invio.
Per Ubuntu scarica il pacchetto repository e installalo:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.3-1_all.deb
dpkg -i mysql-apt-config_0.8.3-1_all.deb
apt-get update
Durante l’installazione del pacchetto su Ubuntu ti verrà chiesto quale versione di MySQL vuoi installare e quali componenti aggiuntivi abilitare; accetta i valori di default se non hai esigenze particolari.
Note: il pacchetto di configurazione apt permette di selezionare versioni future senza dover modificare manualmente le sorgenti.
Installare MySQL 5.7
Con il repository disponibile, installa il server MySQL (pacchetto: mysql-community-server).
Per CentOS:
yum -y install mysql-community-server
Per Ubuntu:
apt-get install -y mysql-community-server
Nota: su Ubuntu il processo di installazione può chiedere una password per l’utente root di MySQL; inseriscine una forte quando richiesto.
Avviare MySQL e abilitare l’avvio automatico
Dopo l’installazione avvia MySQL e abilita l’avvio al boot usando systemd.
Per CentOS (servizio mysqld):
systemctl start mysqld
systemctl enable mysqld
Per Ubuntu (servizio mysql):
systemctl start mysql
systemctl enable mysql
MySQL ascolta, per default, sulla porta TCP 3306. Verifica le porte e i servizi con:
netstat -plntu
Controlla lo stato di abilitazione al boot:
Per CentOS:
systemctl is-enabled mysqld
Per Ubuntu:
systemctl is-enabled mysql
Risultato “enabled” indica che il servizio verrà avviato automaticamente all’accensione.
Configurare la password root (differenze CentOS vs Ubuntu)
Su Ubuntu la password root di MySQL può essere stata impostata durante l’installazione. Su CentOS 7, alla prima avvio, MySQL genera una password temporanea e la scrive nei log (mysqld.log).
Per trovare la password temporanea su CentOS usa:
grep 'temporary' /var/log/mysqld.log
Collegati alla shell MySQL con la password temporanea:
mysql -u root -p
# digita la password temporanea quando richiesto
Quindi modifica la password root con un valore forte. Esempio (sostituisci con la tua password sicura):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newhakase-labs123@';
FLUSH PRIVILEGES;
Note: puoi ripetere questa procedura in qualsiasi momento per reimpostare la password.
Test: creare database e utente
- Accedi come root:
mysql -u root -p
# digita la password impostata
- Crea un database di prova chiamato
hakaselabs
:
CREATE DATABASE hakaselabs;
- Crea un utente di prova
hakase
con una password e assegna i permessi:
CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'Hakase123@';
GRANT ALL PRIVILEGES ON hakaselabs.* TO 'hakase'@'localhost';
FLUSH PRIVILEGES;
- Testa la connessione con l’utente appena creato:
mysql -u hakase -p
# digita la password Hakase123@
SHOW DATABASES;
Dovresti vedere hakaselabs
nella lista dei database.
Controlli di sicurezza consigliati
Eseguire questi passaggi prima di esporre MySQL in produzione:
- Esegui
mysql_secure_installation
e rispondi per rimuovere utenti anonimi, disabilitare login root remoto e rimuovere database di test. - Usa password forti e un password manager per gli account di servizio.
- Disabilita l’accesso root remoto: assicurati che
'root'@'%'
non esista. - Configura firewall (es. firewalld, ufw) per consentire solo host autorizzati alla porta 3306.
- Abilita TLS/SSL per le connessioni se il traffico attraversa reti non fidate.
- Considera l’uso di utenti con permessi minimi (principio del privilegio minimo).
Mini-checklist di sicurezza:
- Eseguito mysql_secure_installation
- Rimosso utente anonimo
- Disabilitato root remoto
- Configurato firewall
- Abilitato TLS per connessioni remote
Troubleshooting: problemi comuni e soluzioni
Problema: non riesco a connettermi sulla porta 3306.
- Verifica che MySQL sia in ascolto:
ss -tlnp | grep 3306
onetstat -plntu
. - Controlla che il file di configurazione
/etc/my.cnf
o/etc/mysql/mysql.conf.d/mysqld.cnf
non abbiabind-address = 127.0.0.1
se ti aspetti connessioni remote (meglio invece usare VPN o liste IP consentiti).
Problema: ho perso la password root su CentOS/Ubuntu.
- Avvia MySQL in modalità safe senza grant tables e reimposta la password (procedura avanzata; eseguire con cautela e solo se necessario).
Problema: pacchetto repository non installa la versione voluta.
- Controlla la versione abilitata nel pacchetto
mysql-apt-config
su Ubuntu; su CentOS verifica che il repositorymysql57-community
sia abilitato in/etc/yum.repos.d/
.
Important: evita di disabilitare completamente la verifica dei pacchetti per risolvere problemi di firma.
Alternative e approcci diversi
- MariaDB: fork compatibile con MySQL utilizzato in molte distribuzioni; compatibilità variabile per funzionalità avanzate.
- Docker: esegui MySQL 5.7 in un container (immagine ufficiale mysql:5.7) per ambienti isolati o CI.
- Pacchetti del vendor: alcune distribuzioni forniscono pacchetti aggiornati tramite backports o repository ufficiali della distro.
Esempio rapido Docker:
docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=MyRootPass -d -p 3306:3306 mysql:5.7
Quando scegliere Docker: utile per test rapidi, meno indicato per storage persistente senza volumi dedicati.
Quando questa procedura fallisce (controesempi)
- Installazione su una versione non supportata della distribuzione: il pacchetto repository potrebbe non essere compatibile.
- Requisiti di sicurezza aziendali che proibiscono repository esterni: in questi casi usare pacchetti approvati dall’IT.
- Collisione con MariaDB già installato: rimuovere o migrare i dati prima di installare MySQL.
Decisione rapida: quale metodo scegliere?
flowchart TD
A[Hai bisogno di MySQL 5.7?] -->|Sì| B{Hai esigenze di produzione?}
B -->|No, test| C[Usa Docker mysql:5.7]
B -->|Sì, produzione| D{Hai repo approvati?}
D -->|Sì| E[Usa pacchetti aziendali]
D -->|No| F[Usa repository ufficiale e segui questa guida]
A -->|No| G[Valuta MariaDB o versione più recente]
Controlli e criteri di accettazione
- MySQL si avvia correttamente e
systemctl status mysql|mysqld
mostra active (running). - Porta 3306 è in ascolto sul server.
- Root login con la password impostata funziona:
mysql -u root -p
. - Utente di prova può connettersi e vedere il database creato.
Ruoli: checklist rapida
Amministratore di sistema:
- Aggiornare repository e pacchetti.
- Configurare firewall e SELinux/AppArmor.
- Monitorare i log
/var/log/mysqld.log
o/var/log/mysql/error.log
.
DevOps:
- Automatizzare installazione con script o Ansible.
- Gestire backup e restore.
- Integrare monitoraggio (metriche, alert).
Sviluppatore:
- Testare connessioni dal codice.
- Usare account con permessi limitati per applicazioni.
Piccola guida operativa (SOP) per installazione ripetibile
- Aggiorna il sistema:
yum update -y
oapt-get update && apt-get upgrade -y
. - Aggiungi repository MySQL (vedi sezione sopra).
- Installa
mysql-community-server
. - Avvia e abilita il servizio.
- Reimposta la password root.
- Esegui
mysql_secure_installation
. - Crea account applicativi con permessi minimi.
- Configura backup e monitoraggio.
Glossario in una riga
- RDBMS: sistema di gestione di database relazionali.
- Repository: archivio di pacchetti software usato dal gestore di pacchetti.
- systemd: sistema di init e manager di servizi usato da molte distro Linux.
FAQ
Q: Come trovo la password temporanea su CentOS?
A: Cerca la riga temporary password
nei log: grep 'temporary' /var/log/mysqld.log
.
Q: Posso aggiornare da MySQL 5.7 a una versione successiva con lo stesso repository?
A: Sì ma verifica la compatibilità e fai backup completi prima dell’aggiornamento.
Q: È sicuro esporre MySQL direttamente su Internet?
A: No. Usa VPN, restrizioni firewall e TLS. Esporre direttamente aumenta il rischio di attacchi.
Riferimenti
- Documentazione ufficiale MySQL per Linux: https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html
Riepilogo
- Hai aggiunto il repository ufficiale MySQL, installato MySQL 5.7, avviato il servizio e configurato la password root su CentOS/Ubuntu.
- Hai creato un database e un utente di test e hai a disposizione checklist di sicurezza e troubleshooting rapido.
Note finali: per ambienti di produzione estesi valuta replica, backup off-site e monitoraggio delle prestazioni.
Materiali simili

Correggere Dev Error 6068 in Warzone

Verificare versione PowerShell in Windows

Installare estensioni su Edge manualmente

Installare osTicket su Ubuntu 16.04 con Nginx e PHP-FPM

Installare MySQL 5.7 su CentOS 7 e Ubuntu 16.04
