it-swarm.com.de

ERROR 1698 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert

Also ... Ich richte einen neuen Server ein und laufe weiter auf dieses Problem.

Wenn ich versuche, mich mit dem root-Benutzer bei der MySQL-Datenbank anzumelden, erhalte ich die Fehlermeldung "ERROR 1698 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert.".

Es ist egal, ob ich mich über das Terminal (SSH), über PHPMyAdmin oder einen MySQL-Client, z. Navicat. Sie alle scheitern.

Ich habe in der mysql.user-Tabelle 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 ziemlich einfach, da ich bereits 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, sodass es E-Mails hosten kann.

Das Anmelden bei der MySQL-Datenbank funktioniert gut, bevor ich iRedMail installiere. Ich habe auch versucht, nur iRedMail zu installieren, aber dann funktioniert root auch nicht ...

Wenn mir jemand sagen könnte, wie ich mein MySQL-Login-Problem behebe oder wie ich iRedMail installiere, zusätzlich zu einer vorhandenen MySQL-Installation. Und ja, ich habe die Installationstipps ausprobiert und ich kann diese Variablen nicht in den Konfigurationsdateien finden.

Jede Hilfe wird sehr geschätzt :)

167
Folkmann

Bei einigen Systemen wie Ubuntu verwendet mysql standardmäßig das UNIX-Plug-In für auth_socket .

Im Wesentlichen bedeutet dies: db_users verwendet es, wird von den Systembenutzer-Berechtigungsnachweisen "auth". Sie können feststellen, ob Ihr root-Benutzer folgendermaßen eingerichtet ist:

$ 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 |
+------------------+-----------------------+

Wie Sie in der Abfrage sehen können, verwendet der root-Benutzer das auth_socket-Plugin

Es gibt zwei Möglichkeiten, dies zu lösen: 

  1. Sie können den Root-Benutzer so einstellen, dass er das mysql_native_password-Plugin verwendet
  2. Sie können mit Ihnen einen neuen db_user erstellen system_user (empfohlen)

Option 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: (Ersetzen Sie YOUR_SYSTEM_USER durch Ihren Benutzernamen.)

$ 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

Denken Sie daran, dass Sie bei Verwendung von Option 2 eine Verbindung zu mysql als Systembenutzernamen (mysql -u YOUR_SYSTEM_USER) herstellen müssen.

Anmerkung: Auf einigen Systemen (z. B. Debian-Stretch) heißt 'auth_socket' Plugin 'unix_socket' , daher sollte der entsprechende SQL-Befehl lauten: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

Update: Von @ andys Kommentar scheint, dass mysql 8.xx den auth_socket für caching_sha2_password aktualisiert/ersetzt hat. Ich habe kein System-Setup mit mysql 8.xx, um dies zu testen. Die oben genannten Schritte sollten Ihnen jedoch helfen um das Problem zu verstehen. Hier ist die Antwort:

Eine Änderung von MySQL 8.0.4 besteht darin, dass das neue Standard-Authentifizierungs-Plugin 'caching_sha2_password' ist. Das neue 'YOUR_SYSTEM_USER' wird dieses Auth-Plugin haben und Sie können sich jetzt über die bash-Shell mit "mysql -u YOUR_SYSTEM_USER -p" anmelden "und geben Sie das Kennwort für diesen Benutzer in der Eingabeaufforderung ein. Keine Notwendigkeit für den Schritt" UPDATE user SET plugin ". Für das 8.0.4-Standardupdate für auth plugins siehe https://mysqlserverteam.com/mysql-8-0 -4-new-default-authentication-plugin-caching_sha2_password/

581
zetacu

Überprüfe hier:

NEW-Version von MySQL macht dies auf diese Weise.

Wenn im neuen my-sql das Kennwort während der Installation leer bleibt, basiert es auf dem auth_socket-Plugin.

Der richtige Weg ist, sich bei my-sql mit dem Privileg Sudo anzumelden.

$ Sudo mysql -u root -p

Und dann das Passwort aktualisieren mit:

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

Sobald dies erledigt ist, stop and start der MySQL-Server.

$  Sudo service mysql stop
$  Sudo service mysql start

Für vollständige Details können Sie sich auf diesen Link beziehen.

Kommentiere für jeden Zweifel.

51
Nandesh

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

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

Und wieder installieren Aber diesmal legen Sie selbst ein root-Passwort fest. Dies spart viel Aufwand.

Sudo apt-get update
Sudo apt-get install mysql-server
7
Eminem347

Ich hatte dieses Problem auf einem Debian 8 VM, mit dem ich über PuTTY auf meinem Windows 10-Desktop interagierte.

Ich habe die verschiedenen Vorschläge hier ausprobiert, aber nichts hat funktioniert, und ich betreibe MariaDB auf dem Debian-Host. Am Ende fand ich heraus, dass ich den Db-Server nicht im abgesicherten Modus starten konnte, aber ich brauchte das nicht und die folgenden Befehle funktionierten für mich, d.

Sudo service mysql restart
Sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
Sudo service mysql restart # restarts the mysql service

Wenn das Obige für Sie nicht ganz funktioniert, folgen Sie den oben in (zetacus Beitrag) beschriebenen Schritten ( zetacu ).

Jetzt sollten Sie in der Lage sein, einen Remote-Terminal-Client zu verwenden und sich mit folgendem Befehl sicher bei mysql anzumelden:

mysql -u your_user_name -p

* Geben Sie das Kennwort ein, wenn Sie dazu aufgefordert werden

5
Tahir Khalid

Das gleiche Problem hatte ich auch beim ersten Mal.

Jetzt ist es behoben:

Zuerst kopieren Sie die Datei /etc/mysql/mysql.conf.d/mysqld.cnf und fügen sie in /etc/mysql/my.cnf ein.

Sie können es mit folgendem Befehl tun:

Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

Lassen Sie uns nun das Passwort ausruhen:

Verwenden Sie die folgenden Befehle in Ihrem Terminal:

Sudo service mysql stop 
Sudo service mysql start
Sudo mysql -u root

Jetzt befinden Sie sich in der MySQL-Konsole.

Dann schreiben wir einige Abfragen, um unser root-Passwort zurückzusetzen

USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit

Jetzt können wir /etc/mysql/my.cng säubern

Öffnen Sie die obige Datei in Ihrem Editor und entfernen Sie die gesamten Zeilen in der Datei.

Danach starten wir mysql neu:

Sudo mysql service restart 

Verwenden wir jetzt mysql mit dem neu erstellten Passwort:

Sudo mysql -u root -p

Zuletzt geben Sie Ihr neu erstelltes Passwort ein.

1

Sie möchten mit dem root-Benutzer auf MySQL zugreifen, aber Sie geben nicht das richtige root-Passwort an.

Wenn Sie ein neues Passwort für root festlegen müssen , finden Sie auf der MySQL-Website eine gute Dokumentation dazu: http: // dev. mysql.com/doc/refman/5.7/de/resetting-permissions.html

Ich werde den Prozess hier nicht zeigen , weil MySql-Dokumentation auf der Über dem Link ist es klar und prägnant .

1

Das arbeitete für mich:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
1
Dorad

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' Ihr neues Passwort, Sie können es ändern.

schritt 4. exit 

Vielen Dank. Du bist fertig.

1

Erster Schritt: Gehen Sie zu /etc/phpmyadmin/config.inc.php, und entfernen Sie die Kommentarzeichen, in denen Sie AllowNoPassword ..__ finden. Zweiter Schritt: Melden Sie sich bei Ihrem mysql-Standardkonto an

mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;

und das ist alles!

0
Ángel Ugarte

os: Ubuntu18.04

mySQL: 5.7

  1. fügen Sie den skip-grant-tables zum Dateiende von mysqld.cnf hinzu

  2. cp die my.cnf

Sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
  1. setzen Sie das Passwort zurück
(base) ➜  ~ Sudo service mysql stop 
(base) ➜  ~ Sudo service mysql start
(base) ➜  ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> update user set plugin="mysql_native_password"; 
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
  1. entferne denskip-grant-tables aus my.cnf
(base) ➜  ~ Sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf 
(base) ➜  ~ Sudo emacs /etc/mysql/my.cnf                 
(base) ➜  ~ Sudo service mysql restart

  1. öffne den mysql
(base) ➜  ~ mysql -uroot -ppassword 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  1. überprüfen Sie die Kennwortrichtlinie
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
  1. ändere die Konfiguration des validate_password
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)

mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

hinweis solltest du wissen, dass dein fehler durch was verursacht wird? validate_password_policy?

sie sollten sich entschließen, Ihr Kennwort zurückzusetzen, um die Richtlinie zu füllen oder die Richtlinie zu ändern.

0
iamcxl

Das ist mir auch passiert. Das Problem ist mit dem MySQL-Repo, das bereits mit der Linux-Distribution kommt. Wenn Sie also einfach: $ Sudo apt install mysql-server Ausführen, wird mysql von ihrem Standard-Repo installiert, wodurch dieses Problem auftritt. Um dies zu umgehen, müssen Sie das installierte mysql $ Sudo apt remove mysql* --purge --auto-remove deinstallieren.

Laden Sie dann mysql repo von der offiziellen mysql-Website MySQL APT Repo .__ herunter. Befolgen Sie die Dokumentation zum Hinzufügen von Repo und installieren Sie es . Dies gibt kein Problem . Mit zetacu können Sie überprüfen, ob mysql root nun tatsächlich das mysql_native_password plugin verwendet

0
sudip