MySQL - Zugriff für Benutzer root@localhost verweigert

MySQL - Zugriff für Benutzer root@localhost verweigert

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:

  1. MySQL-Dienst beenden
  2. Führen Sie den Dienst mit folgendem Befehl aus:

    sudo mysqld_safe --skip-grant-tables &
    
  3. Verbinden (kein Passwort erforderlich):

    mysql -uroot
    
  4. Machen Sie Ihre Änderungen rückgängig (seien Sie diesmal vorsichtig und überprüfen Sie selectden aktuellen Status des Hosts 202.54.10.20):

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. 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.

verwandte Informationen