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