Ricerca nel sito web

Impostazione, modifica e reimpostazione delle password di root MySQL e MariaDB


Questo tutorial spiega come impostare, modificare e reimpostare (se hai dimenticato la password) le password di root MySQL o MariaDB. Di volta in volta vedo problemi come mysqladmin:  connect to server at localhost failed error: Accesso negato per l'utente root@localhost (utilizzando la password: YES). Quindi ho pensato che fosse il momento di ricordarti come risolvere i problemi di password relativi a MySQL. Se stai solo cercando una soluzione rapida come reimpostare una password di root MySQL puoi trovarla in fondo a questo tutorial. Questo tutorial è compatibile con tutte le principali distribuzioni Linux incl. CentOS, Debian, Fedora e Ubuntu.

Utilizzare il comando mysqladmin per modificare la password di root

Metodo 1 - Imposta una password di root per la prima volta

Se non hai mai impostato una password di root per MySQL, il server non richiede alcuna password per connettersi come root. Per impostare una password di root per la prima volta, utilizzare il comando mysqladmin al prompt della shell come segue:

mysqladmin -u root password newpass

Se desideri modificare (o aggiornare) una password di root con la nuova password newpass, devi utilizzare il seguente comando:

mysqladmin -u root -p password newpass
Enter password:

Se ottieni...

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

quindi segui le istruzioni di seguito su come recuperare la tua password MySQL.

La parola password nell'esempio precedente fa parte del comando, non sostituirla con la tua password. La parola newpass è la nuova password.

Un'alternativa all'utilizzo del comando mysqladmin quando si imposta la password di root MySQL o MariaDB per la prima volta consiste nell'utilizzare il comando mysql_secure_installation. Questo comando non solo richiederà la vecchia e la nuova password di root MySQL, ma eseguirà anche alcune altre impostazioni di sicurezza come disabilitare il database di test.

Ecco come usare quel comando:

mysql_secure_installation

Rispondi alle domande come mostrato di seguito:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root 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 

Le risposte di cui sopra sono raccomandazioni, sei libero di scegliere altre impostazioni, ad es. quando preferisci mantenere i database di prova o hai bisogno dell'accesso remoto per l'utente root. Nota: non è necessario l'accesso remoto per utilizzare PHPMyAdmin da remoto.

Cambia la password MySQL per altri utenti

Per modificare una normale password utente è necessario digitare:

mysqladmin -u user-name -p password newpass

Le variabili in questo esempio sono:

  • user-name: il nome utente dell'utente di cui desideri modificare la password.
  • newpass: la nuova password

La parola password non è una variabile, quindi non sostituirla. Il comando chiederà la vecchia password.

Metodo 2 - Aggiorna o modifica la password

MySQL memorizza nomi utente e password nella tabella utenti all'interno del database MySQL. È possibile aggiornare direttamente una password utilizzando il seguente metodo per aggiornare o modificare le password:

1) Accedi al server MySQL, digita il seguente comando al prompt della shell:

mysql -u root -p

2) Utilizzare il database mysql (digitare i comandi al prompt mysql>):

mysql> use mysql;

3) Modificare la password per un utente:

MySQL 5.7.5 e versioni precedenti

mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

MySQL 5.7.6 e versioni successive

mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");

4) Ricarica privilegi:

mysql> flush privileges;
mysql> quit

Questo metodo è necessario utilizzare durante l'utilizzo di script PHP o Perl.

Recupera la password di root MySQL persa

Puoi recuperare la password di un server di database MySQL con i seguenti cinque semplici passaggi:

Passaggio 1: Arrestare il processo del server MySQL.

Passaggio 2: avvia il processo server/daemon MySQL (mysqld) con l'opzione --skip-grant-tables in modo che non richieda una password.

Passaggio 3: Connettiti al server MySQL come utente root.

Passaggio 4: imposta una nuova password di root.

Passaggio 5: Esci e riavvia il server MySQL.

Ecco i comandi che devi digitare per ogni passaggio (accedi come utente root):

Passaggio n. 1: arrestare il servizio MySQL:

service mysql stop

Produzione:

Stopping MySQL database server: mysqld.

Passaggio n. 2: avviare il server MySQL senza password:

mysqld_safe --skip-grant-tables &

Produzione:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

Passaggio 3: connettersi al server MySQL utilizzando il client MySQL:

mysql -u root

Produzione:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56299
Server version: 5.6.34-1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Passaggio 4: imposta una nuova password utente root MySQL:

MySQL 5.7.5 e versioni precedenti

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

MySQL 5.7.6 e versioni successive

mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");
mysql> flush privileges;
mysql> quit

Passaggio n. 5: arresta il server MySQL:

service mysql stop

Produzione:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

Oppure usa questo comando per arrestare MySQL se il comando sopra non riesce a fermarlo (quale comando funziona dipende dalla versione di MySQL):

killall mysqld

L'output potrebbe differire in base alla distribuzione Linux. Non preoccuparti a meno che non segnali un errore. Avvia il server MySQL e testalo:

service mysql start
mysql -u root -p