Ich habe versucht, Fernzugriff auf MySQL zu gewähren, da MySQL nur lokal funktionierte.
Ich bin dieser Anleitung gefolgt http://www.cyberciti.biz/tips/wie-aktiviere-ich-den-Remotezugriff-auf-den-MySQL-Datenbankserver.html
Ich habe einen Befehl wie diesen aus dem Tutorial verwendet:
mysql> update user set Host='202.54.10.20' where user='root';
Ich denke, dies hat das lokale MySQL durcheinander gebracht.
Jetzt kann ich mich nicht mehr anmelden mit:
$ mysql -u root -p
ich bekomme diesen Fehler:
Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: Ja)
Jetzt weiß ich, dass das Passwort richtig ist, da es vorher funktioniert hat. Aber ich habe mich versehentlich ausgesperrt.
Ich weiß nicht mehr, was ich tun soll.
Das vom Server verwendete Betriebssystem ist Ubuntu.
Antwort1
Sie können das reguläre Wiederherstellungsverfahren versuchen:
- MySQL-Dienst beenden
Führen Sie den Dienst mit folgendem Befehl aus:
sudo mysqld_safe --skip-grant-tables &
Verbinden (kein Passwort erforderlich):
mysql -uroot
Machen Sie Ihre Änderungen rückgängig (seien Sie diesmal vorsichtig und überprüfen Sie
select
den aktuellen Status des Hosts202.54.10.20
):use mysql; update user set Host='localhost' where user='root'; flush privileges;
Starten Sie MySQL auf die normale Weise neu
Antwort2
Versuchen Sie diesen Befehl:
SHOW GRANTS FOR 'root'@'localhost';
Dies kann auch passieren, wenn Sie nicht über die erforderlichen Berechtigungen verfügen. Sie können daher auch den folgenden Befehl eingeben:
GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
Antwort3
Ich hatte dasselbe Problem (habe den Benutzerhost von Virtualmin falsch aktualisiert) und habe es mit ähnlichen Schritten wie in der Antwort von @techraf behoben, bin aber ähnlichen Schritten dieser Site gefolgt, um den can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Fehler in Ubuntu 16.04 zu vermeiden:
https://coderwall.com/p/j9btlg/reset-the-mysql-5-7-root-password-in-ubuntu-16-04-lts
Ich habe die Schritte geändert, um den Host statt des Passworts zu aktualisieren:
# Stop MySQL
sudo service mysql stop
# Make MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL user permission to write to the service directory.
sudo chown mysql: /var/run/mysqld
# Start MySQL manually, without permission checks or networking.
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in without a password.
mysql -uroot mysql
dann in MySQL:
select user, host from mysql.user; --just to check
UPDATE mysql.user SET host='localhost' WHERE User='root' AND Host='202.54.10.20'; --CHANGE the host to the one you see in the query
select user, host from mysql.user; --check again
commit;
exit;
Und dann in der Konsole:
# Turn off MySQL.
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
# Start the MySQL service normally.
sudo service mysql start
Antwort4
Wenn dieser Fehler in Workbench auftritt, befolgen Sie diese Schritte.
Melden Sie sich zunächst einfach mit Ihrem aktuellen Passwort an:
sudo mysql -u root -p
Ändern Sie dann Ihr Passwort, da bei Passwörtern mit zu geringer Stärke manchmal Fehler auftreten.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';
FLUSH PRIVILEGES;
Dann beenden Sie einfach das Programm und melden sich erneut mit Ihrem neuen Passwort an:
quit
sudo mysql -u root -p
Geben Sie nach erfolgreicher Anmeldung den folgenden Befehl ein:
use mysql;
Es sollte eine Meldung wie „Datenbank geändert“ angezeigt werden. Geben Sie dann Folgendes ein:
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
Geben Sie danach Folgendes ein:
UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';
Geben Sie dann Folgendes ein:
FLUSH PRIVILEGES;
Dann einfach beenden:
quit
Versuchen Sie nun, sich mit Ihrem neuen Passwort in Ihrer WORKBENCH anzumelden. Hoffentlich klappt es. Vielen Dank.