Come risolvere l'errore MySQL 1698: una guida dettagliata

Pubblicato: 2024-03-28

Hai provato ad accedere al database MySQL come utente root ma ti sei imbattuto nel messaggio di errore Errore MySQL 1698 (28000): Accesso negato per l'utente 'root'@'localhost'? Questo è un problema comune per le persone che lavorano con MySQL. Impedisce l'accesso al database attraverso vari mezzi, tra cui terminali, PHPMyAdmin o interfacce client MySQL. Più comune rispetto a qualsiasi altro sistema operativo (OS), questo errore viene visualizzato per gli utenti del sistema Ubuntu.

In questa guida dettagliata, discuteremo le principali cause dell'errore MySQL 1698 e forniremo soluzioni efficaci per affrontare e risolvere questo errore. Quindi, iniziamo a risolvere questo problema, dopodiché potrai riacquistare un rapido accesso al tuo database MySQL.

Cos'è l'errore MySQL 1698 e le ragioni alla base?

Dietro l'errore MySQL 1698 c'è il problema di come MySQL controlla se qualcuno che tenta di usarlo come utente 'root' è autorizzato a farlo. Con alcuni sistemi operativi, MySQL non utilizza una password regolare per l'utente 'root'. L'account root MySQL lo controlla tramite il plugin auth_socket o unix_socket. Questo plugin funziona in base alle credenziali del sistema operativo anziché a una password, controllando se la richiesta di connessione dell'utente arriva tramite un socket UNIX e quindi convalidando il nome utente rispetto alle credenziali del sistema.

Fondamentalmente, se non hai effettuato l'accesso al tuo sistema operativo come utente "root", MySQL non ti consentirà di accedervi come utente "root". Questo metodo dovrebbe rendere le cose più sicure e più semplici, ma in tale processo potrebbe verificarsi l'errore 1698.

Questo errore viene visualizzato perché c'è un conflitto tra le misure di sicurezza e le aspettative dell'utente. Comprendere il motivo dell'errore è il primo passo per correggere l'errore 1698 e trovare modi per mantenere il database sicuro e facile da usare.

 > Errore MySQL 1698 (28000)

Imparando di più sull'errore MySQL 1698, scopriamo che la sua causa principale non è il concetto tradizionale di password ma un metodo di autenticazione unico. Questo metodo coinvolge il plugin auth_socket o unix_socket, di cui abbiamo parlato sopra.

In sostanza, questo plugin non si preoccupa affatto delle password. Verifica invece se la connessione viene effettuata tramite un socket UNIX e quindi controlla se il nome utente che tenta di connettersi corrisponde a quello registrato nel sistema.

Questo approccio all'autenticazione rappresenta un passaggio dalla sicurezza basata su password. Mostra come funziona il plug-in per consentire alle persone di accedere in base alle informazioni dell'utente dal sistema informatico.

Come risolvere l'errore MySQL 1698?

Parliamo delle soluzioni che funzioneranno contro l'errore MySQL 1698 e garantiranno interazioni efficaci con il database in futuro.

Passa l'utente al plugin mysql_native_password

Passare al plugin ` mysql_native_password ` è una soluzione semplice. Questo approccio implica aggiornare il plugin di autenticazione per l'utente root in ` mysql_native_password` . Dovresti modificare l'impostazione del plugin dell'utente root e quindi applicare queste modifiche svuotando i privilegi MySQL. Questo metodo ripristina l'accesso come soluzione immediata al problema di negazione dell'accesso.

  1. Accedi alla shell MySQL come utente privilegiato.
  2. Utilizza questo comando per cambiare il metodo di autenticazione dell'utente root in ` mysql_native_password `:
 ALTERARE L'UTENTE 'root'@'localhost' IDENTIFICATO CON mysql_native_password DA 'your_new_password';

3. Scarica i privilegi per applicare le modifiche:

 PRIVILEGI A FILO;

4. Uscire dalla shell MySQL e provare nuovamente ad accedere come utente root.

Aggiungi l'utente di sistema alla tabella utenti MySQL

L'aggiunta di un utente di sistema alla tabella utenti MySQL e l'abilitazione del plugin ` auth_socket ` migliora la sicurezza. Questo metodo sfrutta l'autenticazione a livello di sistema operativo, consentendo l'accesso al database in un modo più sicuro rispetto alla tradizionale autenticazione tramite password. Questo approccio riduce al minimo il rischio associato all'utilizzo diretto dell'account root per le operazioni del database.

  1. Accedi al server MySQL come utente root o un altro utente con privilegi sufficienti.
  2. Crea un nuovo utente e imposta l'autenticazione su ` auth_socket` :
 CREA UTENTE 'your_system_user'@'localhost' IDENTIFICATO CON auth_socket;

3. Concedere i privilegi necessari al nuovo utente:

 CONCEDI TUTTI I PRIVILEGI SU *.* A 'your_system_user'@'localhost' CON L'OPZIONE GRANT;

4. Svuota i privilegi per applicare le modifiche:

 PRIVILEGI A FILO;

5. Accedi a MySQL con il nuovo utente di sistema, utilizzando le credenziali del sistema operativo per l'autenticazione.

Disabilita l'autenticazione unix_socket

Se si desidera una soluzione rapida, disabilitare l'autenticazione socket UNIX può fornire una soluzione immediata, anche se meno sicura. Questo metodo consente all'utente root di accedere utilizzando i protocolli di password standard rimuovendo il plug-in socket UNIX dal metodo di autenticazione dell'utente root. Sebbene ciò risolva il problema di accesso, è necessario considerare i potenziali compromessi di sicurezza coinvolti.

  1. Apri la console MySQL.
  2. Aggiorna l'utente root per disabilitare l'autenticazione socket UNIX:
 UPDATE mysql.user SET plugin='' DOVE Utente='root';

3. Elimina i privilegi per salvare le modifiche:

 PRIVILEGI A FILO;

Ora l'utente root può autenticarsi utilizzando una password, ignorando il metodo socket UNIX.

Conclusione

L'errore MySQL 1698 è come un blocco sulla tua strada quando tenti di accedere al tuo database. Se riscontri questo errore per la prima volta o cerchi di prevenire che si verifichi in futuro, comprendere le specifiche di questo errore è fondamentale. Per risolvere l'errore MySQL 1698 è necessaria una conoscenza approfondita dell'architettura di autenticazione di MySQL, soprattutto quando si interseca con le pratiche di sicurezza a livello di sistema operativo, come quelle osservate nei sistemi Ubuntu.

L'errore MYSQL 1698, che nega l'accesso all'utente root, richiede un'attenta configurazione dei meccanismi di autenticazione all'interno di MySQL.

Abbiamo discusso metodi di soluzione approfonditi che vanno dalla modifica del plugin di autenticazione a ` mysql_native_password `, all'integrazione degli utenti del sistema nella tabella utente di MySQL con il plugin ` auth_socket ` o alla disabilitazione totale dell'autenticazione UNIX_socket. Ciascuna soluzione offre un approccio unico per aggirare l'errore, personalizzato per adattarsi a diversi livelli di sicurezza e preferenze amministrative. Quello che sceglierai dipenderà dal livello di sicurezza che desideri avere utilizzando il tuo sistema di gestione del database.