Come resettare la password dell'utente root su Mysql o MariaDB
Può capitare di dimenticare la password di accesso dell'utente root sul server per accedere al database MySQL o MariaDB.
Esempio. Mi è capitato di non ricordare la password root del database. Quando provavo a entrare sul database installato sul mio server, mi restituiva l'errore ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES). Non potendo entrare sul server SQL, non riuscivo nemmeno a modificarla.
Si può cambiare la password dimenticata dell'amministratore sul database SQL?
Fortunatamente si, c'è un modo per cambiarla ma occorre accedere al server Linux come utente root ( sudo user ).
Attenzione. L'utente "root" del database MySQL/MariaDB è diverso dall'utente "root" di Linux. Sono due utenti diversi anche se hanno lo stesso nome ( root ) perché operano su due sistemi diversi. Quindi, possono anche avere password diverse.
Come prima cosa, devo verificare la versione del database installato sul server Linux perché la procedura per resettare la password dimenticata cambia se si tratta di MySQL o di MariaDB.
Come verificare la versione del database installato su Linux
Per verificare la versione del database installata sul server, entro come utente root su Linux.
Poi digito il seguente comando
mysql --version
In questo modo riesco a capire se si tratta di un database MySQL o MariaDB.
Se è installato MySQL appare una stringa simile alla seguente:
mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64)
Se, invece, è installato MariaDB la stringa di risposta è simile alla seguente:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64)
Ora conosco la versione e il database installato sul server Linux.
Posso continuare la procedura per resettare la password, le istruzioni sono diverse a seconda se si tratti di MySQL o di MariaDB.
Come cambiare la password root su MySQL
Entro come superuser do ( utente root ) sul Linux.
Sulla riga comandi digito il comando per stoppare l'esecuzione di MySQL.
systemctl stop mysql
Poi lancio manualmente il database senza caricare la tabella dei privilegi ( grant ).
mysqld_safe --skip-grant-tables --skip-networking &
Entro nel database come utente root senza password
mysql -u root
Se riesco a entrare nel database sulla riga comandi appare il prompt di mysql.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>
A questo punto, digito sulla riga comandi di Mysql il seguente comando per cambiare i privilegi.
FLUSH PRIVILEGES;
Per modificare la password dell'utente root scrivo uno dei seguenti comandi.
Se la versione MYSQL è la 5.75 o inferiore digito il comando:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Se invece la versione di MySql è superiore digito quest'altro comando:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Al posto di new_password scrivo la nuova password da assegnare all'utente root di Mysql.
In risposta il sistema visualizza a video questa stringa in output.
Query OK, 0 rows affected (0.00 sec)
Ho cambiato la password dell'utente root.
A questo punto posso fermare l'esecuzione del database server senza i privilegi.
kill `cat /var/run/mysqld/mysqld.pid`
Poi avvio il restart del database con i privilegi
systemctl start mysql
Per verificare se la password è stata effettivamente cambiata, provo a entrare in MySql come utente root
Poi digito la nuova password.
mysql -u root -p
Se tutto è andato bene appare il prompt mysql>
Ho così resettato la password dell'utente root di Mysql.
Come cambiare la password root su MariaDB
Accedo come sudo user su Linux.
Fermo l'esecuzione del database MariaDB con il seguente comando:
systemctl stop mariadb
Riavvio il database senza i privilegi
mysqld_safe --skip-grant-tables --skip-networking &
Poi mi connetto al database come utente root senza password
mysql -u root
Sulla riga comandi appare il prompt di MariaDB
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]>
Poi digito il seguente comando per modificare i privilegi
FLUSH PRIVILEGES;
A questo punto posso cambiare la password dell'utente root.
Se sta girando la versione 10.1.20 di MariaDB o inferiore digito:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Viceversa, se sta girando una versione più recente utilizzo il seguente comando:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Se la modifica è stata eseguita, sul prompt appare la seguente stringa:
Query OK, 0 rows affected (0.00 sec)
Ho cambiato la password dell'utente root di MariaDB.
Ora posso fermare l'esecuzione di MariaDB
kill `/var/run/mariadb/mariadb.pid`
Quindi avvio il restart di MariaDB con i privilegi
systemctl start mariadb
Per vedere se la modifica ha funzionato, entro sul database MariaDB come utente root
Poi digito la nuova password.
mysql -u root -p
Se tutto è andato bene appare il prompt di MariaDB.
Ho così cambiato la password dimenticata dell'utente root sul database MariaDB.