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


Su questa pagina

  1. Utilizzare il comando mysqladmin per modificare la password di root
    1. Metodo 1 - Imposta una password di root per la prima volta
    2. Cambia la password MySQL per altri utenti
    3. Metodo 2 - Aggiorna o modifica la password

    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 giunto 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 si desidera modificare (o aggiornare) una password di root con la nuova password newpass, è necessario 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 sopra 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 test 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 successivi

    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 successivi

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

    Passaggio 5: arrestare 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