VIGA 1698 (28000): Kasutajale 'root'@'localhost' juurdepääs keelatud;
Olen uue serveri loomisel ja puutun pidevalt kokku selle probleemiga.
Kui ma üritan MySQL andmebaasi sisse logida root-kasutajaga, saan ma vea:
ERROR 1698 (28000): @'localhost'kasutaja 'root'@'juurdepääs keelatud;
Ei ole vahet, kas ma ühendun terminali(SSH), PHPMyAdmini või MySQL-kliendi, nt Navicat, kaudu. Nad kõik ebaõnnestuvad.
Vaatasin mysql.user tabelisse ja saan järgmist:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Nagu näete, peaks rootil olema juurdepääs.
Server on üsna lihtne, sest ma olen juba mõnda aega üritanud seda tõrkeotsingut teha...
Ta töötab Ubuntu 16.04.1 LTS koos Apache, MySQL ja PHP, nii et ta saab hostida veebilehti, ja iRedMail 0.9.5-1, nii et ta saab hostida posti.
MySQL andmebaasi sisselogimine toimib enne iRedMaili paigaldamist suurepäraselt. Ma proovisin ka, lihtsalt paigaldada iRedMail, kuid siis root, ka ei'ei tööta...
Kui keegi võiks mulle öelda, kuidas ma parandada minu MySQL sisselogimise probleem või kuidas ma paigaldada iRedMail, peal olemasoleva MySQL installi. Ja jah, ma proovisin Installeerimisnippe ja ma ei'lesta neid muutujaid config-failides.
Mõnedes süsteemides, nagu Ubuntu, kasutab mysql vaikimisi UNIX auth_socket plugin.
Põhimõtteliselt tähendab see, et: db_kasutajad, kes seda kasutavad, on "auth" süsteemi kasutaja credentias. Saate näha, kas teie
root
kasutaja on selliselt seadistatud, tehes järgmist:Nagu te näete päringust, kasutab
root
kasutajaauth_socket
pluginat.Selle lahendamiseks on 2 võimalust:
mysql_native_password
pluginat.db_user
koossystem_user
iga (soovitatav).Võimalus 1:
Võimalus 2: (asendage YOUR_SYSTEM_USER kasutajanimega, mis teil on)
Pea meeles, et kui kasutad valikut #2, pead sa ühenduma mysql-i oma süsteemi kasutajanimega (
mysql -u YOUR_SYSTEM_USER
).Märkus: Mõnes süsteemis (nt Debian stretch) on 'auth_socket' plugin nimega 'unix_socket', seega peaks vastav SQL käsk olema:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
.Update: @andy's kommentaarist tundub, et mysql 8.x.x uuendas/asendas
auth_socket
jaokscaching_sha2_password
Mul ei ole mysql 8.x.x.x süsteemiga seadistatud, et seda testida, kuid ülaltoodud sammud peaksid aitama probleemi mõistmisel. Siin'on vastus:Üks muudatus alates MySQL 8.0.4 on see, et uus vaikimisi autentimise plugin on 'caching_sha2_password'. Uuel 'YOUR_SYSTEM_USER' on see auth plugin ja nüüd saab bash shell'ist sisse logida "mysql -u YOUR_SYSTEM_USER -p" ja anda selle kasutaja parool käsureale. Ei ole vaja "UPDATE user SET plugin" sammu. 8.0.4 vaikimisi auth plugina uuendamise kohta vt, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Soovitan eemaldada Mysql-ühenduse -
UPDATE-see on Mysql versioon 5.5, kui teie versioon on erinev, palun muutke esimene rida vastavalt.
Ja paigalda uuesti Aga seekord määra ise root parool. See säästab palju vaeva.
Sa tahad MySQL-i kasutada root-kasutajaga, kuid sa ei anna root'ile õiget parooli.
Kui teil on vaja seadistada root'ile uus parool, on MySQL'i saidil suurepärane dokumentatsioon selle kohta, kuidas seda teha: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html.
Ma ei näita siin protsessi, sest MySql dokumentatsioon ülaltoodud lingil on selge ja ülevaatlik.