GNU/Linux >> Linux Esercitazione >  >> Linux

Come reimpostare la password dell'utente root MySQL in Linux

Hai dimenticato la tua password utente root MySQL? Nessun problema! Questa guida ti guida attraverso i passaggi per reimpostare la password utente root di MySQL nei sistemi operativi Linux. I passaggi indicati di seguito dovrebbero funzionare anche per reimpostare la password di root di MariaDB.

Abbiamo già pubblicato una guida per reimpostare la password utente root (amministrativa) in MySQL versioni precedenti, ovvero MySQL 5.7. Ma quel metodo non funzionava con la nuova versione di MySQL 8. Se desideri reimpostare la password di root in MySQL 8, segui una delle due soluzioni alternative indicate di seguito.

Reimposta la password utente root MySQL in Linux

Come ho già detto, possiamo reimpostare la password di root di MySQL in due modi.

  • Il modo generico,
  •  Utilizzo di init_file variabile di sistema.

1. Il modo generico per reimpostare la password di root MySQL

Questo metodo funzionerà indipendentemente dal sistema operativo in uso. Ti avverto che è un meno sicuro modo, perché avvieremo il server MySQL con --skip-grant-tables opzione. Ciò offre a chiunque abbia accesso al server accesso illimitato a tutti i database .

Innanzitutto, arresta il servizio MySQL utilizzando il comando:

$ sudo systemctl stop mysql

Puoi verificare se MySQL è stato effettivamente interrotto con il comando:

$ sudo systemctl status mysql

Risultato di esempio:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago
     Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 666 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
 May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.

Bene, il servizio MySQL non è in esecuzione.

Ora, riavvia il server MySQL senza controllare i permessi eseguendo il comando seguente:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Qui, --skip-grant-tables l'opzione ti consente di connetterti al server del database mysql senza password e con tutti i privilegi. Il --skip-networking viene utilizzata per impedire agli altri client di connettersi al server di database. E la e commerciale (& ) Il simbolo viene utilizzato per eseguire il comando in background, in modo da poter digitare gli altri comandi forniti nei passaggi successivi. Tieni presente che il comando sopra è pericoloso e il tuo server di database diventa insicuro e vulnerabile alle minacce alla sicurezza. Dovresti eseguire questo comando solo per un breve periodo di tempo per reimpostare la password.

Potresti visualizzare il seguente errore:

2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Se vedi questo errore, crea la directory mancante (ad esempio /var/run/mysqld ) e imposta le autorizzazioni appropriate come di seguito.

$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld

Ora riprova ad avviare il server mysql senza password e con privilegi di root:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Quindi, connettiti al server mysql usando il comando:

$ mysql

Verrai reindirizzato al prompt della shell di mysql.

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 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.

Dato che abbiamo effettuato l'accesso senza caricare le tabelle di concessione (perché abbiamo usato --skip-grant-tables opzione), non possiamo utilizzare ALTER USER comando per reimpostare la password. Quindi carichiamo le tabelle di concessione usando il comando:

mysql> FLUSH PRIVILEGES;

Ora, esegui il seguente comando per aggiornare la password utente root di mysql:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Nel comando precedente, sostituisci [email protected]#@! con la tua password. Tieni presente che se hai abilitato Validate Password componente, è necessario utilizzare una password complessa.

Infine, esci dal prompt di MySQL:

mysql> exit

Infine, spegni il server di database in esecuzione avviato in precedenza con --skip-grant-tables opzione. Per farlo, esegui:

$ sudo mysqladmin -u root -p shutdown

Ti verrà chiesto di inserire il tuo sudo password seguita dalla root di MySQL password utente impostata nel passaggio precedente.

[sudo] password for ostechnix: 
Enter password: 
2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended
[1]+  Done                    sudo mysqld_safe --skip-grant-tables --skip-networking

Se il comando precedente non funziona, trova il .pid file che contiene l'ID di processo del server. Il file PID sarà generalmente disponibile in /var/lib/mysql/ o /var/run/mysqld/ o /usr/local/mysql/data/ directory a seconda della distribuzione, del nome host e della configurazione. In genere, il nome del file ha estensione .pid e inizia con mysqld o il nome host del tuo sistema.

Nel mio caso, è "/var/lib/mysql/ubuntuserver.pid" .

Quindi, ho interrotto l'istanza del server di database con il comando:

$ sudo kill `/var/lib/mysql/ubuntuserver.pid`

Utilizza il segno di spunta indietro per citare il percorso del file.

Possiamo anche trovare il pid MySQL usando ps e grep comandi come di seguito:

$ ps ax | grep mysql

Risultato di esempio:

1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking
1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid

Uccidilo manualmente come di seguito:

$ sudo kill <PID>

Oppure, uccidi tutti i servizi MySQL:

$ sudo  killall mysql

Ora, avvia normalmente il servizio MySQL usando il comando:

$ sudo systemctl start mysql

Ora accedi al server MySQL con la nuova password:

$ mysql -u root -p

Risultato di esempio:

2. Reimposta la password di root MySQL con il file della password

Un altro modo per reimpostare la password di root di MySQL è usare init_file variabile di sistema.

Arresta il servizio MySQL:

$ sudo systemctl stop mysql

Crea un file di testo, ad esempio ostechnix.txt :

$ vi ostechnix.txt

Aggiungi la seguente riga al suo interno:

ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Sostituisci [email protected]#@! con la tua password nella riga sopra. Se hai abilitato Validate Password plug-in, dovresti specificare una password complessa. Salva e chiudi il file.

Ora avvia il server MySQL con il init_file variabile di sistema che punta a ostechnix.txt file:

$ sudo mysqld --init-file=/home/sk/ostechnix.txt &

Questo comando eseguirà il contenuto di ostechnix.txt file e aggiorna il [email protected] password dell'account con la nuova password menzionata nel ostechnix.txt file e infine avvia il server mysql.

Ora ferma e riavvia normalmente il server MySQL:

$ sudo systemctl stop mysql
$ sudo systemctl start mysql

Infine, elimina il file della password, ad esempio ostechnix.txt .

$ rm /home/sk/ostechnix.txt

Ora puoi essere in grado di accedere al server mysql con una nuova password usando il comando:

$ mysql -u root -p

Abbiamo anche pubblicato un metodo leggermente diverso per reimpostare la password di root di MySQL. Consulta la seguente guida per i dettagli:

>> How To Reset Root Password In MySQL 8 On Ubuntu Linux

Conclusione

In questa guida, abbiamo appreso due modi diversi per reimpostare la password utente root MySQL dimenticata nei sistemi operativi Linux. Se hai perso la password utente dell'account amministrativo del database, puoi reimpostarla facilmente in un paio di minuti.


Linux
  1. Come reimpostare la password di root MySql

  2. Come reimpostare la password di root di MySQL o MariaDB

  3. Reimposta la password di root su Rocky Linux - Come farlo?

  4. Come reimpostare la password di root server MySQL

  5. Come reimpostare la password di root di MySQL?

Come reimpostare la password di root in MySQL 8 su Ubuntu Linux

Come reimpostare la password amministratore di WordPress tramite MySQL

Hai dimenticato la password Linux su WSL? Ecco come ripristinarlo facilmente

Come reimpostare la password di root di MySQL

Come modificare/reimpostare la password di root di MySQL o MariaDB

Come ripristinare la password di root di MySQL 8.0 su Centos 7.x?