Der Befehl:
mysql -u root -p
gibt den Fehler:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Aber das Ausführen von Sudo-Berechtigungen funktioniert:
sudo mysql -u root -p
Ist es möglich, die Sudo-Anforderung loszuwerden, weil ich dadurch die Datenbank nicht in Intellij öffnen kann? Ich habe Folgendes versucht, wie in der Antwort auf diese Frage. Stellen Sie ohne sudo eine Verbindung zum lokalen MySQL-Server her :
sudo chmod -R 755 /var/lib/mysql/
das hat nicht geholfen. Die obige Frage hat einen anderen Fehler ausgelöst
Antworten:
Nur der Root-Benutzer benötigt die Sudo-Anforderung, um sich bei MySQL anzumelden. Ich habe dieses Problem behoben, indem ich einen neuen Benutzer erstellt und Zugriff auf die erforderlichen Datenbanken gewährt habe:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
Jetzt
newuser
können Sie sich ohne Sudo-Anforderung anmelden:quelle
IDENTIFIED BY
, in diesem Fall einfach 'Passwort'-p
Option kein Leerzeichen . Zum Beispiel:mysql -u newuser -ppassword
(kein Platz!)Sie müssen den Algorithmus ändern. Nach der Arbeit für mich,
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; mysql > FLUSH PRIVILEGES;
quelle
Sie können denselben ROOT-Benutzer oder einen NEW_USER verwenden und die SUDO-Berechtigungen entfernen. Das folgende Beispiel zeigt, wie Sie die Verbindung mit ROOT ohne SUDO entfernen.
Stellen Sie mit SUDO eine Verbindung zu MY-SQL her
Löschen Sie den aktuellen Root-Benutzer aus der Benutzertabelle
DROP USER 'root'@'localhost';
Neuen ROOT-Benutzer erstellen (Sie können bei Bedarf einen anderen Benutzer erstellen)
CREATE USER 'root'@'%' IDENTIFIED BY '';
Erteilen Sie Berechtigungen für neue Benutzer (ROOT)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Flush-Berechtigungen, damit die Grant-Tabellen sofort neu geladen werden. ( Warum müssen wir Berechtigungen spülen? )
FLUSH PRIVILEGES;
Jetzt ist alles gut. Überprüfen Sie für alle Fälle, ob ein neuer Root-Benutzer erstellt wurde.
SELECT User,Host FROM mysql.user; +------------------+-----------+ | User | Host | +------------------+-----------+ | root | % | | debian-sys-maint | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 4 rows in set (0.00 sec)
Beenden Sie MySQL. (Drücken Sie STRG + Z). Stellen Sie ohne SUDO eine Verbindung zu MySQL her
Hoffe das wird helfen!
quelle
Melden Sie sich zuerst mit sudo bei Ihrem MySQL an.
Verwenden Sie dann diesen Code, um den Spaltenwert "plugin" von "unix_socket" oder "auth_socket" in "mysql_native_password" für den Root-Benutzer zu ändern.
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin IN ('unix_socket', 'auth_socket'); FLUSH PRIVILEGES;
Starten Sie schließlich den MySQL-Dienst neu. das ist es.
Wenn Sie weitere Informationen wünschen, überprüfen Sie diesen Link
AKTUALISIEREN:
In neuen Versionen von MySQL oder Mariadb können Sie Folgendes verwenden:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('your-password'); FLUSH PRIVILEGES;
quelle
sudo service mysql restart
Neustarten.Sie können die folgende Abfrage verwenden:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
Diese Abfrage ist ausreichend.
quelle
Ich habe dieses Problem mit den folgenden Befehlen gelöst.
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost'; FLUSH PRIVILEGES;
Hier
username
= beliebiger Benutzername.und
password
= ein beliebiges Passwort.quelle
Diese Antwort muss für mariaDB anstelle von mysql leicht angepasst werden.
Melden Sie sich zuerst mit sudo als root an:
Ändern Sie dann den Mariadb-Root-Benutzer:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('mypassword'); FLUSH PRIVILEGES;
Sudo wird ab sofort nicht mehr benötigt:
Verwendete Version: mysql Ver 15.1 Distrib 10.4.13-MariaDB für osx10.15 (x86_64) mit readline 5.1
quelle
In dem Kommentar der Frage, auf die Sie antworten, heißt es
Dies schien für diese Frage zu funktionieren (die, von der Sie sagten, dass Sie sie angeschaut haben), sodass sie möglicherweise auch für Sie funktioniert
quelle
Die Fehlermeldung:
"FEHLER 1698 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert"
bedeutet, dass der Server die Verbindung für diesen Benutzer nicht zulässt und MySQL nicht auf den Socket zugreifen kann.
Versuchen Sie dies, um das Problem zu lösen:
Melden Sie sich in Ihrer Datenbank an
Nehmen Sie dann folgende Änderungen vor:
MariaDB []>use mysql; MariaDB [mysql]>update user set plugin=' ' where User='root'; MariaDB [mysql]>flush privileges; MariaDB [mysql]>exit
Versuchen Sie erneut, sich ohne sudo anzumelden
quelle