FEJL 1698 (28000): Adgang nægtet for brugeren 'root'@'localhost'
Jeg er ved at oprette en ny server og støder hele tiden på dette problem.
Når jeg forsøger at logge ind på MySQL-databasen med root-brugeren, får jeg fejlen:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Det er ligegyldigt om jeg forbinder via terminalen(SSH), via PHPMyAdmin eller en MySQL Client, f.eks. Navicat. De fejler alle sammen.
Jeg kiggede i tabellen mysql.user og får følgende:
+------------------+-------------------+
| 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 |
+------------------+-------------------+
Som du kan se, burde root have adgang.
Serveren er ret enkel, da jeg har forsøgt at fejlfinde dette i et stykke tid nu...
Den kører Ubuntu 16.04.1 LTS med Apache, MySQL og PHP, så den kan hoste hjemmesider, og iRedMail 0.9.5-1, så den kan hoste mail.
Login på MySQL-databasen virker fint, før jeg installerer iRedMail. Jeg har også prøvet, bare at installere iRedMail, men så root, virker heller ikke...
Hvis nogen kunne fortælle mig, hvordan jeg løser mit MySQL login problem, eller hvordan jeg installerer iRedMail, ovenpå en eksisterende MySQL installation. Og ja jeg har prøvet Installationstips og jeg kan ikke finde disse variabler i config filerne.
På nogle systemer som Ubuntu bruger mysql som standard UNIX auth_socket plugin.
Det betyder grundlæggende at: db_users using it, will be "auth" by _the system user credentias. Du kan se om din
root
bruger er sat op på denne måde ved at gøre følgende:Som du kan se i forespørgslen, bruger
root
-brugerenauth_socket
-plugin'etDer er 2 måder at løse dette på:
mysql_native_password
db_user
med dinsystem_user
(anbefales)Mulighed 1:
Option 2: (erstat YOUR_SYSTEM_USER med det brugernavn, du har)
Husk at hvis du bruger mulighed #2 skal du forbinde til mysql som dit system brugernavn (
mysql -u YOUR_SYSTEM_USER
)Note: På nogle systemer (f.eks. Debian stretch) hedder 'auth_socket' plugin 'unix_socket', så den tilsvarende SQL-kommando bør være:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
opdatering: fra @andy's kommentar synes at mysql 8.x.x opdateret/erstattet
auth_socket
forcaching_sha2_password
Jeg don't har et system opsætning med mysql 8.x.x til at teste dette, men trinene ovenfor bør hjælpe dig til at forstå problemet. Her's svaret:En ændring fra MySQL 8.0.4 er, at det nye standardgodkendelsesplugin er 'caching_sha2_password'. Den nye 'YOUR_SYSTEM_USER' vil have dette auth-plugin, og du kan logge ind fra bash-shellen nu med "mysql -u YOUR_SYSTEM_USER -p" og angive adgangskoden for denne bruger på prompten. Der er ikke behov for "UPDATE user SET plugin" trin. For opdatering af standardauth-plugin 8.0.4 se: https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Jeg vil foreslå at fjerne Mysql-forbindelsen -
UPDATE-Dette er for Mysql version 5.5,hvis din version er anderledes, skal du ændre den første linje i overensstemmelse hermed
Og installer igen, men denne gang skal du selv indstille et root password. Dette vil spare en masse arbejde.
Du ønsker at få adgang til MySQL med root-brugeren, men du har ikke angivet root's korrekte adgangskode.
Hvis du har brug for at indstille en ny adgangskode til root, har MySQL's websted god dokumentation om, hvordan du gør det: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Jeg viser ikke processen herinde fordi MySql dokumentation på ovenstående link er det'er klart og tydeligt.