Introducere
Acest articol este destinat utilizatorilor care încearcă să se conecteze la MySQL cu o parolă corectă, dar primesc o eroare: „Error 1045: Access denied for user (using password: YES)”
Dacă ați uitat parola de root MySQL, vă rugăm să consultați acest articol:
- Cum se resetează parola de root MySQL.
Dacă încercați să vă conectați ca root prin phpMyAdmin, vă rugăm să vedeți:
- Nu se poate conecta la phpMyAdmin: mysqli_real_connect(): (HY000/1698): Acces refuzat pentru utilizatorul ‘root’@’localhost’
Înțelegerea utilizatorilor și gazdelor MySQL
MySQL restricționează accesul utilizatorilor pe baza valorii host
a unui utilizator. În mod implicit, valoarea host
pentru contul root și pentru utilizatorii noi este setată la localhost
, ceea ce înseamnă că vă puteți conecta numai prin intermediul mașinii locale sau prin phpMyAdmin dacă este instalat pe aceeași gazdă locală. Dacă încercați să vă conectați la un cont localhost
de la distanță, este posibil ca acesta să vă respingă parola corectă cu mesajul „Acces refuzat pentru utilizator (folosind parola: YES)”.
Dacă ne uităm la această listă simplă de utilizatori MySQL de mai jos ca exemplu:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Deasupra avem trei utilizatori MySQL cu valori host
diferite.
Să ne uităm la câteva scenarii în care parola corectă poate fi respinsă în funcție de valoarea host
:
- Utilizator
- ✅ Se poate autentifica de pe
localhost
, adică de pe mașina pe care rulează serviciul MySQL. - ✅ Se poate autentifica din phpMyAdmin dacă este instalat pe aceeași gazdă locală.
- ❌Nu se poate autentifica de la distanță și va primi „Acces refuzat pentru utilizator (folosind parola: YES)”.
- ✅ Se poate autentifica de pe
- Utilizator
- ✅ Se poate conecta numai de la adresa IP
10.0.53.185
. - ❌ Nu se poate conecta de la nicio altă adresă IP „Acces refuzat pentru utilizator (folosind parola: DA)”.
- ❌ Nu se poate loga de la localhost „Acces refuzat pentru utilizator (folosind parola: YES)”.
- ❌ Nu se poate loga de la phpMyAdmin „Acces refuzat pentru utilizator (folosind parola: YES)”.
- ✅ Se poate conecta numai de la adresa IP
- User
%
- ✅ Se poate autentifica de oriunde (
%
este un joker).
- ✅ Se poate autentifica de oriunde (
Schimbarea valorii de gazdă a unui utilizator MySQL
Puteți schimba valoarea de gazdă pentru un utilizator care utilizează contul root MySQL sau orice cont cu privilegii de superutilizator. Acest lucru se poate face prin linia de comandă sau prin phpMyAdmin.
Via Command Line
Trebuie să accesați baza de date MySQL folosind root sau un superutilizator care are acces la tabelul MySQL Users.
Contul root este în mod implicit accesibil doar de la localhost, așa că este posibil să primiți „Access denied for user (using password: YES)” dacă încercați să vă conectați de la distanță. Într-o astfel de eventualitate, va trebui să obțineți cumva acces local la server.
Pentru a vă loga într-o bază de date MySQL locală:
mysql -u root -p
Pentru a vă loga într-o bază de date MySQL de la distanță, înlocuiți pur și simplu hostname_or_ip
cu propria dvs. bază de date.
mysql -u root -h hostname_or_ip -p
După ce v-ați logat în MySQL, listați toți utilizatorii MySQL și gazdele lor corespunzătoare în baza de date.
SELECT User,Host FROM mysql.user;
Rezultat:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Deasupra putem vedea o listă cu utilizatorii MySQL și gazdele lor.
Dacă vrem să ne logăm folosind test-user1
de la distanță, de oriunde, trebuie să schimbăm valoarea host în wildcardul %
, care va permite logarea de la distanță de oriunde. Pentru o securitate sporită, ați putea schimba această valoare cu o adresă IP.
În exemplul de mai jos, schimbăm gazda pentru test-user1
de la localhost
la %
%
înseamnă wildcard și va permite acestui utilizator să se logheze de la distanță de oriunde.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Trebuie să spălați privilegiile MySQL pentru ca modificările să aibă efect.
FLUSH PRIVILEGES;
Acum încercați să vă autentificați din nou de la distanță.
Via phpMyAdmin
Intrați în phpMyAdmin folosind contul de root sau un cont cu privilegii de superutilizator.
- După ce v-ați logat în phpMyadmin, faceți clic pe baza de date
mysql
din coloana din stânga. - Click pe fila SQL.
- Tastați sau lipiți în caseta de interogare SQL:
SELECT User,Host FROM mysql.user;
pentru a lista toți utilizatorii MySQL din baza de date. - Click pe Go pentru a rula interogarea.
Ar trebui să vedeți acum o listă cu toți utilizatorii MySQL și gazdele lor corespunzătoare.
Pentru a schimba valoarea gazdei unui utilizator MySQl:
- Faceți dublu clic pe câmpul gazdă de lângă utilizatorul pe care doriți să-l modificați (în roșu mai jos).
- Tastați
%
pentru a permite oricui să se conecteze la acest utilizator de oriunde. Ați putea, de asemenea, să schimbați acest lucru cu un IP de la distanță pentru o mai bună securitate. - Presați
ENTER
pe tastatură pentru a salva modificările.
Nu ați terminat încă. Acum trebuie să curățați privilegiile MySQL.
- Click din nou pe fila SQL
- Tastați sau lipiți în caseta de interogare SQL:
FLUSH PRIVILEGES;
- Click Go pentru a rula interogarea.
Ar trebui să puteți acum să vă conectați de la distanță.
Să-mi spuneți dacă v-a ajutat. Urmăriți-mă pe Twitter, Facebook și YouTube, sau 🍊 cumpărați-mi un smoothie.
p.s. Mi-am crescut veniturile AdSense cu 200% folosind AI 🤖. Citiți recenzia mea despre Ezoic pentru a afla cum.
.