Cum se rezolvă eroarea MySQL 1698: un ghid detaliat

Publicat: 2024-03-28

Ați încercat să accesați baza de date MySQL ca utilizator rădăcină, dar ați dat peste mesajul de eroare MySQL error 1698 (28000): Access denied for user 'root'@'localhost'? Aceasta este o problemă comună pentru persoanele care lucrează cu MySQL. Împiedică accesul la baza de date prin diferite mijloace, inclusiv interfețe terminale, PHPMyAdmin sau client MySQL. Mai frecventă decât cu orice alt sistem de operare (OS), această eroare apare pentru utilizatorii sistemului Ubuntu.

În acest ghid detaliat, vom discuta principalele cauze ale erorii MySQL 1698 și vom oferi soluții eficiente pentru a aborda și rezolva această eroare. Deci, să începem să rezolvăm această problemă, după care veți recâștiga accesul rapid la baza de date MySQL.

Ce este eroarea MySQL 1698 și motivele din spatele acesteia?

În spatele erorii MySQL 1698 se află problema modului în care MySQL verifică dacă cineva care încearcă să o folosească ca utilizator „rădăcină” are voie să facă acest lucru. Cu unele sisteme de operare, MySQL nu folosește o parolă obișnuită pentru utilizatorul „rădăcină”. Contul rădăcină MySQL îl verifică prin pluginul auth_socket sau unix_socket. Acest plugin funcționează mai degrabă pe baza acreditărilor sistemului de operare decât a unei parole, verificând dacă cererea de conectare a utilizatorului vine printr-un socket UNIX și apoi validând numele de utilizator în raport cu acreditările sistemului.

Practic, dacă nu sunteți conectat la sistemul de operare ca utilizator „rădăcină”, MySQL nu vă va permite să îl accesați ca utilizator „rădăcină”. Această metodă ar trebui să facă lucrurile mai sigure și mai ușoare, dar în acest proces poate apărea eroarea 1698.

Această eroare apare deoarece există un conflict între măsurile de securitate și așteptările utilizatorilor. Înțelegerea motivului din spatele erorii este primul pas în remedierea erorii 1698 și găsirea modalităților de a menține baza de date sigură și ușor de utilizat.

 > Eroare MySQL 1698 (28000)

Aflând mai multe despre eroarea MySQL 1698, descoperim că cauza sa principală nu este conceptul tradițional de parole, ci o metodă unică de autentificare. Această metodă implică pluginul auth_socket sau unix_socket, despre care am atins mai sus.

În esență, acest plugin nu se deranjează deloc cu parolele. În schimb, verifică dacă conexiunea este realizată printr-un socket UNIX și apoi verifică dacă numele de utilizator care încearcă să se conecteze se potrivește cu cel conectat în sistem.

Această abordare a autentificării reprezintă o schimbare de la securitatea bazată pe parole. Acesta arată cum funcționează pluginul pentru a permite oamenilor să intre pe baza informațiilor despre utilizator din sistemul computerizat.

Cum se rezolvă eroarea MySQL 1698?

Să discutăm despre soluții care vor funcționa împotriva erorii MySQL 1698 și să asigurăm interacțiuni eficiente cu bazele de date în viitor.

Comutați utilizatorul la pluginul mysql_native_password

Trecerea la pluginul ` mysql_native_password ` este o soluție simplă. Această abordare înseamnă actualizarea pluginului de autentificare pentru utilizatorul root la ` mysql_native_password` . Ar trebui să modificați setarea pluginului utilizatorului root și apoi să aplicați aceste modificări prin eliminarea privilegiilor MySQL. Această metodă restabilește accesul ca o soluție imediată a problemei de refuzare a accesului.

  1. Accesați shell-ul MySQL ca utilizator privilegiat.
  2. Utilizați această comandă pentru a comuta metoda de autentificare a utilizatorului root la ` mysql_native_password `:
 ALTER USER 'root'@'localhost' IDENTIFICAT CU mysql_native_password DE 'your_new_password';

3. Eliminați privilegiile pentru a aplica modificările:

 PRIVILEGII FLUSH;

4. Ieșiți din shell-ul MySQL și încercați să vă conectați din nou ca utilizator root.

Adăugați utilizator de sistem la tabelul de utilizatori MySQL

Adăugarea unui utilizator de sistem la tabelul de utilizatori MySQL și activarea pluginului ` auth_socket ` îmbunătățește securitatea. Această metodă folosește autentificarea la nivel de sistem de operare, permițând accesul la baza de date într-un mod care este mai sigur decât autentificarea tradițională prin parolă. Această abordare minimizează riscul asociat cu utilizarea directă a contului root pentru operațiunile de bază de date.

  1. Conectați-vă la serverul MySQL ca utilizator root sau alt utilizator cu privilegii suficiente.
  2. Creați un utilizator nou și setați autentificarea la ` auth_socket `:
 CREATE USER 'your_system_user'@'localhost' IDENTIFICAT CU auth_socket;

3. Acordați privilegiile necesare noului utilizator:

 ACORDAȚI TOATE PRIVILEGIILE PE *.* CĂTRE „user_system_dvs”@„localhost” CU OPȚIUNEA DE ARGENTARE;

4. Eliminați privilegiile pentru a aplica modificările:

 PRIVILEGII FLUSH;

5. Conectați-vă la MySQL cu noul utilizator de sistem, utilizând acreditările OS pentru autentificare.

Dezactivați autentificarea unix_socket

Dacă doriți o soluție rapidă, dezactivarea autentificării socket UNIX poate oferi o soluție imediată, deși mai puțin sigură. Această metodă permite utilizatorului root să se conecteze utilizând protocoale standard de parolă prin eliminarea pluginului socket UNIX din metoda de autentificare a utilizatorului root. În timp ce acest lucru rezolvă problema de acces, ar trebui să luați în considerare potențialele compromisuri de securitate implicate.

  1. Deschideți consola MySQL.
  2. Actualizați utilizatorul root pentru a dezactiva autentificarea socketului UNIX:
 UPDATE mysql.user SET plugin='' WHERE User='root';

3. Eliminați privilegiile pentru a salva modificările:

 PRIVILEGII FLUSH;

Acum, utilizatorul root se poate autentifica folosind o parolă, ocolind metoda socket-ului UNIX.

Concluzie

Eroarea MySQL 1698 este ca un blocaj pe drum când încercați să vă accesați baza de date. Indiferent dacă întâmpinați această eroare pentru prima dată sau că doriți să preveniți apariția viitoare, înțelegerea specificului acestei erori este crucială. Pentru a rezolva eroarea MySQL 1698, aveți nevoie de o înțelegere aprofundată a arhitecturii de autentificare MySQL, mai ales atunci când aceasta se intersectează cu practicile de securitate la nivel de sistem de operare, cum ar fi cele observate în sistemele Ubuntu.

Eroarea MYSQL 1698, care interzice accesul utilizatorului root necesită o configurare atentă a mecanismelor de autentificare în MySQL.

Am discutat despre metode amănunțite de soluție, de la modificarea pluginului de autentificare la ` mysql_native_password `, integrarea utilizatorilor de sistem în tabelul de utilizatori MySQL cu pluginul ` auth_socket ` sau dezactivarea completă a autentificării UNIX_socket. Fiecare soluție oferă o abordare unică pentru ocolirea erorii, adaptată pentru a se potrivi diferitelor posturi de securitate și preferințe administrative. Cel pe care îl veți alege va depinde de nivelul de securitate pe care doriți să îl aveți folosind sistemul dumneavoastră de gestionare a bazei de date.