GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Modifica il metodo di autenticazione per l'utente root MySQL in Ubuntu

Questa guida spiega perché e come modificare il metodo di autenticazione per l'utente root MySQL in Autenticazione pluggable SHA-2 con memorizzazione nella cache o Autenticazione pluggable nativa metodo in Ubuntu.

Introduzione

Anche se hai imposta la password per il root di MySQL utente, non puoi ancora autenticarti con il server del database come root utente con una password. Perché l'utente root di MySQL è impostato per l'autenticazione utilizzando il auth_socket plug-in per impostazione predefinita invece della password nei sistemi Ubuntu che eseguono MySQL 5.7 e versioni successive. Quindi, non puoi accedere al server MySQL con l'utente root e la sua password.

Anche se provi ad autenticarti come utente root usando il comando:

$ mysql -u root -p

Verrà visualizzato il seguente messaggio di errore:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Il auth_socket plugin verifica se il nome utente del socket (il nome utente del sistema operativo) corrisponde al nome utente MySQL specificato dal programma client al server.

Questo plugin non si preoccupa e non ha bisogno di una password. Verifica semplicemente se l'utente si sta connettendo utilizzando un socket UNIX e quindi confronta il nome utente.

Se il plug-in rileva che il nome utente del sistema operativo e il nome utente MySQL sono uguali, consente la connessione senza ulteriore autenticazione.

Ad esempio, se esiste un utente chiamato ostechnix sul sistema operativo, potrà accedere al 'ostechnix'@'localhost' account all'interno di MySQL se l'autenticazione del socket Unix è il meccanismo di autenticazione definito. Se il nome utente del sistema operativo è diverso dal nome utente MySQL, il auth_socket il plugin rifiuta semplicemente la connessione.

Il auth_socket plugin migliora la sicurezza, ma complica anche le cose quando utilizziamo programmi esterni come phpMyAdmin per accedere al server del database.

Inoltre, gli utenti autenticati da auth_socket il plug-in può connettersi solo dall'host locale tramite il file socket Unix. Sono limitati dalla connessione in remoto. Questo è il motivo per cui abbiamo bisogno di cambiare il metodo di autenticazione per l'utente root MySQL in Ubuntu.

1. Modifica il metodo di autenticazione per l'utente root MySQL in Ubuntu

MySQL fornisce molti metodi di autenticazione e i plugin che implementano tali metodi. In questa guida, discutiamo solo di due plugin chiamati caching_sha2_password e mysql_native_password che implementa i metodi chiamati Autenticazione pluggable SHA-2 con memorizzazione nella cache e Autenticazione pluggable nativa rispettivamente.

Per prima cosa, vedremo come modificare il metodo di autenticazione per l'utente root MySQL in caching_sha2_password .

1.1. Cambia il plug-in di autenticazione in caching_sha2_password

Il caching_sha2_password plug-in esegue l'autenticazione utilizzando l'hashing della password SHA-256. In MySQL 8.0, caching_sha2_password è il plug-in di autenticazione predefinito anziché mysql_native_password . Fornisce una crittografia della password più sicura, un'autenticazione più rapida e prestazioni migliori.

Per modificare il plug-in di autenticazione, accedi al server MySQL utilizzando il comando:

$ sudo mysql

Poiché MySQL 8 usa auth_socket plug-in in Ubuntu, il comando sopra ti consentirà di accedere al server MySQL come root utente. Inserisci il tuo sudo password per autenticarsi.

Quindi, trova il metodo di autenticazione corrente per tutti gli account utente mysql eseguendo il seguente comando al prompt di MySQL:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Risultato di esempio:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             |                                                                        | auth_socket           | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.01 sec)

Come puoi vedere, l'utente root di MySQL usa auth_socket plugin per l'autenticazione. Cambiamo il auth_socket plug-in per caching_sha2_password plug-in utilizzando ALTER USER comando come di seguito.

Tieni presente che se hai abilitato VALIDATE PASSWORD plug-in durante l'impostazione della password utente root di MySQL, è necessario inserire una password complessa basata sulla politica della password corrente. Una password complessa deve essere composta da almeno 8 caratteri, tra cui una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Sostituisci Password123#@! nel comando sopra con una password forte e univoca di tua scelta e annotala perché ne avremo bisogno in seguito.

Quindi, aggiorna le modifiche usando il comando:

mysql> FLUSH PRIVILEGES;

Ora controlla se il plug-in di autenticazione corrente è stato modificato o non utilizzando il comando:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Risultato di esempio:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | $A$005$z9Lq/%(r l
 +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

Il metodo di autenticazione per l'utente root MySQL è stato impostato su Caching SHA-2 Pluggable Authentication. D'ora in poi, l'utente root di MySQL può autenticarsi utilizzando una password.

Esci dal prompt di MySQL:

mysql> exit

Per verificare se l'utente root MySQL può accedere con una password, immettere il comando seguente:

$ mysql -u root -p

Immettere la password utente root MySQL:

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 11
 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.

 mysql> 

Anche se caching_sha2_password fornisce una crittografia sicura avanzata e prestazioni migliori, presenta alcuni problemi di compatibilità con le installazioni MySQL esistenti e causa problemi con alcune versioni di PHP. Per i dettagli, fare riferimento a questo collegamento .

Se hai riscontrato problemi di compatibilità o se il client o il connettore non supporta caching_sha2_password plug-in di autenticazione, torna al metodo di autenticazione nativo, ad esempio mysql_native_password come descritto nella sezione seguente.

1.2. Modifica il plug-in di autenticazione in mysql_native_password

MySQL include un mysql_native_password plug-in che implementa il metodo di autenticazione pluggable nativo. Fornisce l'autenticazione basata sul metodo di hashing della password.

Il mysql_native_password era il metodo di autenticazione predefinito nelle versioni precedenti di MySQL.

Per passare a mysql_native_password plug-in, accedi a MySQL come root utente:

$ mysql -u root -p

Se stai usando auth_socket plugin, dovresti inserire il seguente comando per accedere al server MySQL come root utente:

$ sudo mysql

Per impostare mysql_native_password plug-in come autenticazione predefinita per l'utente root MySQL, eseguire il comando seguente al prompt di MySQL.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Aggiorna le modifiche usando il comando:

mysql> FLUSH PRIVILEGES;

Ora controlla se il metodo di autenticazione è cambiato o non usando il comando:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Risultato di esempio:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68                              | mysql_native_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

Fatto! Abbiamo cambiato il metodo di autenticazione per l'utente root MySQL in Native Pluggable Authentication.

Conclusione

In questa guida, abbiamo esaminato il motivo per cui è necessario modificare il metodo di autenticazione per l'utente root di MySQL nei sistemi Ubuntu che eseguono MySQL 5.7 e versioni successive. Abbiamo anche visto come cambiare auth_socket plug-in per caching_sha2_password o mysql_native_password plugin per utente root MySQL nel sistema operativo Ubuntu.

Lettura correlata:

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

Ubuntu
  1. Come modificare la password di sudo o root in Ubuntu

  2. Diventa un utente root in Ubuntu 22.04 - Guida passo passo?

  3. Come installare MySQL su Ubuntu 18.04 LTS

  4. Modificare il percorso delle cartelle utente predefinito?

  5. shell diversa per utente root e non root

Come modificare la password utente in Ubuntu [Tutorial per principianti]

Un modo semplice per installare MySQL su Ubuntu Linux

Come aprire il file manager di Ubuntu come utente root

Come cambiare la password di root in Ubuntu

Come modificare la password di root in Ubuntu Linux

Come accedere come root in MySQL?