L’accesso ai database è un’attività fondamentale per la gestione dei server e la manutenzione delle applicazioni web.
MySQL è uno dei sistemi di gestione di database (DBMS) più comuni e potenti. In qualità di amministratore di database, gestisci informazioni critiche e la password root di MySQL svolge un ruolo cruciale nel garantire la sicurezza e l’integrità di questi dati.
Occasionalmente, potresti perdere o dimenticare la password root di MySQL. Questo può accadere per vari motivi, da circostanze impreviste a cambiamenti nel team o semplici errori umani. In questi casi, è essenziale sapere come reimpostare la password root e ripristinare l’accesso al database.
In questo articolo presenteremo metodi e strumenti per aiutarti a reimpostare la password root di MySQL e a recuperare il pieno controllo del tuo database. Tratteremo diversi approcci, dall’uso di strumenti ufficiali MySQL come mysqladmin e mysqld_safe alla modifica dei file di configurazione e all’esecuzione di modifiche di sistema.
Esamineremo inoltre importanti precauzioni per aiutarti a proteggere il database e prevenire la perdita futura della password root. Queste includono l’utilizzo di password complesse, la limitazione dell’accesso al database ai soli utenti necessari e l’esecuzione di backup regolari per ridurre al minimo i rischi.
Pertanto, se devi reimpostare la password root di MySQL, di seguito troverai istruzioni dettagliate e raccomandazioni per aiutarti a ripristinare l’accesso e riprendere la gestione del tuo database MySQL.
MySQL non utilizza PAM e la password SSH non funzionerà. La password root viene impostata durante l’installazione del server di database nella fase di creazione delle tabelle dei privilegi.
Se, dopo un tentativo di accesso, ricevi l’errore ERROR 1045: Access denied for user 'root'@'localhost' invece di un messaggio di benvenuto, devi reimpostare la password root.
Per reimpostare la password root in MySQL 8, è necessario seguire una procedura semplice. Questo metodo è ugualmente adatto sia per MySQL che per MariaDB, poiché sono completamente compatibili e utilizzano gli stessi comandi.
Su Ubuntu, puoi reimpostare la password root di MySQL utilizzando gli stessi metodi di Debian. Può verificarsi una lieve differenza per CentOS 7, che segnaleremo nella sezione corrispondente più avanti.
Se stai anche effettuando la pulizia degli account utente, consulta How to Properly Delete a MySQL User: l’articolo illustra il controllo e la revoca dei permessi e l’utilizzo del comando DROP USER, aiutandoti a rimuovere accessi non necessari una volta ripristinati i privilegi di root.
Questo è un metodo piuttosto comune grazie alla sua semplicità. Di seguito è riportato un piano passo dopo passo per questa operazione:
service mysqld stop
mysqld --skip-grant-tables&
La e commerciale alla fine consente di eseguire il servizio in background, in modo che non occupi una finestra di terminale separata.
Poiché le tabelle dei privilegi non sono caricate, non è necessario inserire una password:
mysql -u root
Ogni comando inviato al database deve terminare con un punto e virgola. Se la query non è completa, MySQL attenderà il proseguimento del comando. È possibile aggiungere semplicemente un punto e virgola se è stato dimenticato nella nuova riga.
FLUSH PRIVILEGES;
La risposta dovrebbe essere: Query OK, 0 rows affected.
Per impostare una nuova password root in MySQL, su Ubuntu e Debian utilizzare:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Se questa query non funziona, provare:
UPDATE `mysql`.`user` SET `password`=password('PASSWORD') WHERE `user`='root';
Oppure:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('PASSWORD');
Su CentOS 7, è possibile reimpostare la password root di MySQL con il comando:
UPDATE `mysql`.`user` SET `authentication_string`=password('PASSWORD') WHERE `user`='root';
Se l’esecuzione ha esito positivo, verrà visualizzata la risposta: Query OK, 0 rows affected.
La password può anche essere un valore vuoto, ma in questo caso perderai la possibilità di connetterti al server con qualsiasi altro metodo diverso dalla riga di comando. La modifica della password ha effetto immediato dopo l’esecuzione del comando. Puoi verificarla, ad esempio, connettendoti tramite phpMyAdmin se non è stato impostato un valore vuoto.
quit;
La risposta dovrebbe essere Bye e tornerai al terminale normale.
service mysqld start
La reimpostazione della password del superutente MySQL su Windows è simile alla procedura per reimpostare la password root sui sistemi Linux. Le differenze possono riguardare solo il processo di individuazione e avvio del servizio di database stesso.
Di seguito è riportata una guida passo dopo passo per reimpostare la password del superutente del database su Windows.
Esiste una differenza a seconda del database installato. Per verificarlo, eseguire:
Per MySQL:
sc qc "mysql"
Per MariaDB:
sc qc "mariadb"
Se il database non è installato, verrà visualizzato un messaggio che indica che il servizio non esiste. In caso contrario, verranno mostrate informazioni di base su MySQL o MariaDB.
Se la variabile %PATH% non è impostata, accedi alla cartella che contiene il file eseguibile del servizio di database. Puoi trovare il percorso nell’output del comando sc qc, alla voce "BINARY_PATH_NAME". Nel nostro caso, è C:\localhost\mariadb\bin\.
cd C:\localhost\mariadb\bin\
Per MySQL:
net stop mysql
Per MariaDB:
net stop mariadb
Utilizza il comando start. A differenza di Linux, in Windows la e commerciale alla fine del comando non funziona e, quando il servizio viene avviato, non consente l’esecuzione di ulteriori comandi fino alla fine della sessione (CTRL+C).
Puoi utilizzare lo stesso comando sia per MySQL che per MariaDB.
mysqld --skip-grant-tables
mysql -u root -p
Inserisci la password vuota e vedrai il messaggio di benvenuto standard. Ora devi inserire i comandi per il server di database.
FLUSH PRIVILEGES;
Senza questo comando iniziale, potresti ricevere un errore durante la modifica della password: "ERROR 1290: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement."
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Nota: se il comando non funziona, prova le opzioni del Passaggio 5 delle istruzioni per i sistemi Linux.
Chiudi la finestra del Prompt dei comandi con la versione temporanea del database in esecuzione oppure premi CTRL+C.
Per MySQL:
net start mysql
Per MariaDB:
net start mariadb
Reimpostare la password root di MySQL è una competenza importante per gli amministratori di database. In questo articolo abbiamo esaminato vari metodi e strumenti per reimpostare la password root e recuperare il pieno controllo del database MySQL gestito.
In conclusione, ecco alcuni punti chiave relativi alla sicurezza dei database:
Utilizza password complesse che combinino lettere, numeri e caratteri speciali e cambiale regolarmente.
Limita l’accesso al database solo agli utenti essenziali per ridurre il rischio di accessi non autorizzati.
Aggiorna regolarmente il sistema MySQL per eliminare vulnerabilità note e ricevere le patch di sicurezza più recenti.
Esegui backup regolari del database. Questa è la tua assicurazione in caso di perdita di dati o guasti di sistema. Sviluppa una strategia di backup, determina la frequenza e i metodi di creazione dei backup e verifica la loro capacità di ripristino per garantire il recupero dei dati.
Ricorda l’importanza della formazione e dello sviluppo continuo nella gestione dei database. Rimani informato sulle ultime tendenze, sulle nuove funzionalità e sugli strumenti MySQL. Utilizza risorse educative, partecipa a seminari e conferenze e confrontati con professionisti esperti del settore. Aggiornare costantemente le tue conoscenze e competenze ti aiuterà a gestire il database in modo efficace e a risolvere i problemi emergenti.
Reimpostare la password root di MySQL è un’attività critica che richiede attenzione e competenze. Tuttavia, grazie ai metodi e alle raccomandazioni illustrate, puoi gestire questa attività e recuperare il controllo completo del tuo database MySQL. Ricorda di garantire la sicurezza, creare backup e continuare a formarti, e il tuo lavoro con MySQL sarà efficace e sicuro.