Ich richte einen neuen Server ein und stoße weiterhin auf dieses Problem.
Wenn ich versuche, mich mit dem Root-Benutzer bei der MySQL-Datenbank anzumelden, wird folgende Fehlermeldung angezeigt:
FEHLER 1698 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert
Es spielt keine Rolle, ob ich eine Verbindung über das Terminal (SSH), über PHPMyAdmin oder einen MySQL-Client, z. B. Navicat, herstelle. Sie alle scheitern.
Ich habe in der Tabelle mysql.user nachgesehen und Folgendes erhalten:
+------------------+-------------------+
| 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 |
+------------------+-------------------+
Wie Sie sehen können, sollte root Zugriff haben.
Der Server ist recht einfach, da ich seit einiger Zeit versucht habe, dies zu beheben.
Es läuft Ubuntu 16.04.1 LTS mit Apache, MySQL und PHP, so dass es Websites hosten kann, und iRedMail 0.9.5-1, damit es E-Mails hosten kann.
Die Anmeldung bei der MySQL-Datenbank funktioniert einwandfrei, bevor ich iRedMail installiere. Ich habe auch versucht, nur iRedMail zu installieren, aber dann root funktioniert auch nicht ...
Wenn mir jemand sagen könnte, wie ich mein MySQL-Anmeldeproblem behebe oder wie ich iRedMail zusätzlich zu einer vorhandenen MySQL-Installation installiere. Und ja, ich habe die Installationstipps ausprobiert und kann diese Variablen in den Konfigurationsdateien nicht finden.
sudo mysql_secure_installation
ist der einfachste Weg, das zu behebenAntworten:
Einige Systeme wie Ubuntu, mysql verwenden standardmäßig das UNIX-Plugin auth_socket .
Grundsätzlich bedeutet dies: db_users, die es verwenden, werden von den Anmeldeinformationen des Systembenutzers "auth" . Sie können sehen, ob Ihr
root
Benutzer so eingerichtet ist, indem Sie folgende Schritte ausführen:Wie Sie in der Abfrage sehen können, verwendet der
root
Benutzer dasauth_socket
PluginEs gibt zwei Möglichkeiten, dies zu lösen:
mysql_native_password
Plugin verwendetdb_user
mit Ihnen eine neue erstellensystem_user
(empfohlen)Option 1:
Option 2: (Ersetzen Sie YOUR_SYSTEM_USER durch Ihren Benutzernamen)
Denken Sie daran, dass Sie bei Verwendung von Option 2 eine Verbindung zu MySQL als Systembenutzername herstellen müssen (
mysql -u YOUR_SYSTEM_USER
)Hinweis: Auf einigen Systemen (z. B. Debian Stretch) heißt das Plugin 'auth_socket' 'unix_socket' , daher sollte der entsprechende SQL-Befehl lauten:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Update: von @ andy Kommentar , dass mysql 8.xx scheint aktualisiert / ersetzt die
auth_socket
fürcaching_sha2_password
Ich habe kein System - Setup mit mysql 8.xx haben dies zu testen, aber die oben genannten Schritte sollten Sie das Problem verstehen helfen. Hier ist die Antwort:Eine Änderung seit MySQL 8.0.4 ist, dass das neue Standardauthentifizierungs-Plugin 'caching_sha2_password' ist. Das neue 'YOUR_SYSTEM_USER' verfügt über dieses Authentifizierungs-Plugin. Sie können sich jetzt mit "mysql -u YOUR_SYSTEM_USER -p" von der Bash-Shell aus anmelden und das Kennwort für diesen Benutzer an der Eingabeaufforderung eingeben. Der Schritt "UPDATE user SET plugin" ist nicht erforderlich. Informationen zum Standard-Auth-Plugin-Update 8.0.4 finden Sie unter https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
quelle
sudo gedit /etc/phpmyadmin/config.inc.php
. Dann habe ich nachAllowNoPassword
beiden Zeilen gesucht und sie kommentiert, die sie enthielten. Dann konnte ich mich ohne Passwort als root anmelden.IDENTIFIED BY ''
bisschen sollte wahrscheinlich seinIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
etc", und es hat nicht funktioniert.sudo mysql -u root -p
ich nicht reinlasse?Überprüfe hier:
Die NEUE Version von MYSQL macht es so.
Wenn im neuen my-sql das Passwort während der Installation leer bleibt, basiert es auf dem
auth_socket
Plugin.Der richtige Weg ist, sich mit
sudo
Berechtigungen bei my-sql anzumelden .Und dann aktualisieren Sie das Passwort mit:
Sobald dies erledigt ist,
stop and start
der MySQL-Server.Ausführliche Informationen finden Sie unter diesem Link .
Kommentieren Sie im Zweifelsfall.
quelle
Ich hatte dieses Problem auf einer Debian 8-VM, mit der ich über Putty auf meinem Windows 10-Desktop interagierte.
Ich habe die verschiedenen Vorschläge hier ausprobiert, aber nichts hat ganz funktioniert und ich führe MariaDB auf dem Debian-Host aus. Am Ende stellte ich fest, dass ich den Datenbankserver nicht im abgesicherten Modus starten konnte, dies aber nicht musste und die folgenden Befehle tatsächlich für mich funktionierten, dh einem neu erstellten MySql-Benutzer die Möglichkeit zu geben, sich beim MySql / MariaDB-Server anzumelden:
Wenn das oben Genannte für Sie nicht ganz funktioniert, befolgen Sie die in Zetacus Beitrag oben beschriebenen Schritte ( Zetacu ) und befolgen Sie dann meine Schritte.
Jetzt sollten Sie in der Lage sein, einen Remote-Terminal-Client zu verwenden und sich mit dem folgenden Befehl sicher bei MySQL anzumelden:
* Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden
quelle
Ich würde vorschlagen, die MySQL-Verbindung zu entfernen -
UPDATE-Dies ist für MySQL Version 5.5. Wenn Ihre Version anders ist, ändern Sie bitte die erste Zeile entsprechend
Und erneut installieren Aber diesmal legen Sie selbst ein Root-Passwort fest. Dies spart viel Aufwand.
quelle
Nach stundenlangem Kampf ohne Lösung funktionierte dies für mich. Dann fand ich ein Youtube-Video, in dem steht, dass die Passwortspalte jetzt authentication_string heißt. So konnte ich mein Passwort wie folgt ändern: Gehen Sie zuerst vom Terminal in MySQL
Geben Sie dann in mysql was auch immer nach mysql> ein
Zu diesem Zeitpunkt befinden Sie sich außerhalb von MySQL und kehren zu Ihrem normalen Terminal zurück. Sie müssen mysql neu starten, damit dies wirksam wird. für diesen Typ Folgendes:
Siehe dieses Video - Link für ein besseres Verständnis
quelle
Schritt 1.
sudo mysql -u root -p
Schritt 2.
USE mysql;
Schritt 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Hier ist 'admin' dein neues Passwort, du kannst es ändern.
Schritt 4.
exit
Vielen Dank. Du bist fertig.
quelle
Kein Sudo nötig
Die Datenbank wird mit zwei Konten mit allen Berechtigungen initialisiert: Das erste ist "root", auf das nicht zugegriffen werden kann, und das zweite mit Ihrem Benutzernamen (überprüfen Sie mit dem Befehl
whoami
).Um den Zugriff auf das Root-Konto zu ermöglichen, müssen Sie sich mit Ihrem Benutzernamen anmelden
und ändern Sie das Passwort für root manuell
Loggen Sie sich als 'root' ein
quelle
Erster Schritt: Gehen Sie zu /etc/phpmyadmin/config.inc.php und kommentieren Sie die Zeilen aus, in denen Sie AllowNoPassword finden. Zweiter Schritt: Melden Sie sich bei Ihrem MySQL-Standardkonto an
und das ist alles!
quelle
Das hat bei mir funktioniert:
quelle
Das gleiche Problem hatte ich auch beim ersten Mal.
Jetzt ist es behoben:
Zuerst kopieren Sie die
/etc/mysql/mysql.conf.d/mysqld.cnf
Datei und fügen sie in ein/etc/mysql/my.cnf
.Sie können es auf Befehl tun:
Lassen Sie uns nun das Passwort ruhen:
Verwenden Sie die folgenden Befehle in Ihrem Terminal:
Jetzt befinden Sie sich in der MySQL-Konsole.
Dann schreiben wir einige Abfragen, um unser Root-Passwort zurückzusetzen
Jetzt können wir putzen
/etc/mysql/my.cng
Öffnen Sie die obige Datei in Ihrem Editor und entfernen Sie die gesamten Zeilen in der Datei.
Danach starten wir mysql neu:
Verwenden wir jetzt MySQL mit dem neu erstellten Passwort:
Geben Sie abschließend Ihr neu erstelltes Passwort ein.
quelle
Nach stundenlanger Recherche habe ich hier meine Lösung gefunden.
Stoppen Sie MySQL
Erstellen Sie das MySQL-Dienstverzeichnis.
Geben Sie dem MySQL-Benutzer die Berechtigung, in das Dienstverzeichnis zu schreiben.
Starten Sie MySQL manuell, ohne Berechtigungsprüfungen oder Netzwerk.
Melden Sie sich ohne Passwort an.
Kennwort aktualisieren
Schalten Sie MySQL aus.
Starten Sie den MySQL-Dienst normal.
quelle
Sie möchten mit dem Root-Benutzer auf MySQL zugreifen, geben jedoch nicht das richtige Passwort für root an.
Wenn Sie ein neues Kennwort für root festlegen müssen, finden Sie auf der MySQL-Website eine ausführliche Dokumentation dazu: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Ich werde den Prozess hier nicht zeigen, da die MySQL-Dokumentation über den obigen Link klar und präzise ist .
quelle
Betriebssystem: Ubuntu18.04
MySQL: 5.7
skip-grant-tables
Fügen Sie das zum Dateiende von mysqld.cnf hinzucp die my.cnf
skip-grant-tables
aus my.cnfvalidate_password
Beachten Sie, dass Sie wissen sollten, dass Sie Fehler durch was verursacht? validate_password_policy?
Sie sollten sich entscheiden, Ihr Kennwort zurückzusetzen, um die Richtlinie zu füllen oder die Richtlinie zu ändern.
quelle
Das ist mir auch passiert. Das Problem ist mit dem MySQL-Repo, das bereits mit der Linux-Distribution geliefert wird. Also, wenn Sie es einfach tun:
$ sudo apt install mysql-server
Es installiert MySQL von ihrem Standard-Repo, was dieses Problem verursacht. Um dies zu überwinden, müssen Sie das installierte MySQL deinstallieren$ sudo apt remove mysql* --purge --auto-remove
Laden Sie dann MySQL- Repo von der offiziellen MySQL- Website herunter. MySQL APT Repo Befolgen Sie die Dokumentation zum Hinzufügen und Installieren von Repo. Dies gibt kein Problem. Auch wie von @zetacu beantwortet, können Sie überprüfen, ob mysql root jetzt tatsächlich das Plugin mysql_native_password verwendet
quelle
in meinem Fall,
Ich bin sicher, dass mein Passwort korrekt war, sonst wäre der Fehlercode
ERROR 1045 (28000): Access denied for user
Also melde ich mich mit Sudo wieder an.
diesmal hat es bei mir geklappt. Siehe die Dokumente
und dann das Root-Passwort ändern,
Starten Sie dann den Server mit neu
sudo /etc/init.d/mysql restart
quelle