NAPAKA 1698 (28000): Uporabnik 'root'@'localhost'
Vzpostavljam nov strežnik in vedno znova naletim na to težavo.
Ko se poskušam prijaviti v podatkovno zbirko MySQL z uporabnikom root, dobim napako:
ERROR 1698 (28000): Uporabniku 'root'@'localhost'
Ni pomembno, ali se povežem prek terminala (SSH), PHPMyAdmina ali odjemalca MySQL, npr. Navicat. Vsi so neuspešni.
Pogledal sem v tabelo mysql.user in dobil naslednje:
+------------------+-------------------+
| 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 |
+------------------+-------------------+
Kot lahko vidite, bi moral imeti root dostop.
Strežnik je precej preprost, saj sem to poskušal odpraviti že nekaj časa.
Na njem teče Ubuntu 16.04.1 LTS z Apache, MySQL in PHP, da lahko gosti spletne strani, in iRedMail 0.9.5-1, da lahko gosti pošto.
Prijava v podatkovno zbirko MySQL deluje brez težav, preden namestim iRedMail. Poskusil sem tudi, samo namestiti iRedMail, ampak potem root, tudi ne deluje...
Če mi lahko kdo pove, kako naj odpravim težavo s prijavo v MySQL ali kako naj namestim iRedMail na obstoječo namestitev MySQL. In ja, poskusil sem Nasveti za namestitev in ne morem najti teh spremenljivk v konfiguracijskih datotekah.
V nekaterih sistemih, kot je Ubuntu, mysql privzeto uporablja UNIX auth_socket plugin.
V osnovi to pomeni, da: db_uporabniki, ki ga uporabljajo, bodo "avtentificirani" z predpisi sistemskega uporabnika. Če je vaš uporabnik
root
nastavljen na tak način, lahko preverite naslednje:Kot lahko vidite v poizvedbi, uporabnik
root
uporablja vtičnikauth_socket
.To lahko rešite na dva načina:
mysql_native_password
.db_user
zsystem_user
(priporočljivo).Opcija 1:
Opcija 2: (zamenjajte YOUR_SYSTEM_USER z uporabniškim imenom, ki ga imate)
Ne pozabite, da se boste morali, če uporabite možnost #2, povezati z mysql kot sistemsko uporabniško ime (
mysql -u YOUR_SYSTEM_USER
)Note: V nekaterih sistemih (npr. Debian stretch) se vtičnik 'auth_socket' imenuje 'unix_socket', zato mora biti ustrezen ukaz SQL: Uporabnik:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Posodobitev: iz komentarja @andy'se zdi, da je mysql 8.x.x posodobil/zamenjal
auth_socket
zacaching_sha2_password
Nimam nastavljenega sistema z mysql 8.x.x, da bi to preizkusil, vendar bi vam morali zgornji koraki pomagati razumeti težavo. Tukaj je odgovor:Ena od sprememb v MySQL 8.0.4 je, da je novi privzeti vtičnik za preverjanje pristnosti 'caching_sha2_password'. Novi 'YOUR_SYSTEM_USER' bo imel ta vtičnik auth in zdaj se lahko prijavite iz lupine bash z "mysql -u YOUR_SYSTEM_USER -p" in na poziv navedete geslo za tega uporabnika. Korak "UPDATE user SET plugin" ni potreben. Za posodobitev vtičnika za privzeto avtentikacijo v različici 8.0.4 glejte: https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Predlagam, da odstranite povezavo Mysql -
UPDATE - to velja za različico Mysql 5.5, če je vaša različica drugačna, ustrezno spremenite prvo vrstico
In znova namestite, vendar tokrat sami nastavite korensko geslo. To vam bo prihranilo veliko truda.
Do MySQL želite dostopati z uporabnikom root, vendar mu ne posredujete pravilnega gesla.
Če morate nastaviti novo geslo za root, je na spletnem mestu MySQL na voljo odlična dokumentacija o tem, kako to storiti: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html.
Postopka tukaj ne bom prikazal, ker je dokumentacija MySQLql na zgornji povezavi jasna in jedrnata.