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:
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
Som du kan se i forespørgslen, bruger root
-brugeren auth_socket
-plugin'et
Der er 2 måder at løse dette på:
mysql_native_password
db_user
med din system_user
(anbefales)Mulighed 1:
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
Option 2: (erstat YOUR_SYSTEM_USER med det brugernavn, du har)
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
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
for caching_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
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean
Og installer igen, men denne gang skal du selv indstille et root password. Dette vil spare en masse arbejde.
sudo apt-get update
sudo apt-get install mysql-server
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.