it-swarm.com.de

Zugriff für Benutzer 'root' @ 'localhost' (mit Kennwort: YES) verweigert

Ich habe versucht, eine Webanwendung auf meinem Server bereitzustellen, und ich erhalte die Ausnahme für die mysql-Datenbank "Zugriff für Benutzer 'root' @ 'localhost' (unter Verwendung des Kennworts: YES) (Mysql :: Error)" verweigert. " 

Ich habe versucht, über den Befehl Prompt mit mysql -u root -p auf die Datenbank zuzugreifen. Ich kann alle Datenbankoperationen ausführen. 

was ist der fehler 

Java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:2928)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:771)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.Java:3649)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.Java:1176)
    at com.mysql.jdbc.Connection.createNewIO(Connection.Java:2558)
    at com.mysql.jdbc.Connection.<init>(Connection.Java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:266)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:620)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:200)
    at com.mpigeon.DbConnection.DbConn(DbConnection.Java:26)
    at com.mpigeon.CheckLoginHome.doGet(CheckLoginHome.Java:39)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
30
Jeevan Dongre

Sie müssen Root von localhost aus Zugriff gewähren. Überprüfen Sie diese Ubuntu-Hilfe

22
Jigar Joshi

versuchen Sie es mit root wie ..

mysql -uroot

sie können dann nach der Anmeldung andere Benutzer und Hosts überprüfen, indem Sie verwenden

select user,Host,password from mysql.user;
8
Vivek Buddhadev

Überprüfen Sie, ob Sie ein Leerzeichen in das Kennwort eingeben.

6
KhAn SaAb

Nach dem Upgrade des MySQL-Servers von 5.1.73 auf 5.5.45 .__ trat der gleiche Fehler auf. Es gibt eine andere Möglichkeit, diesen Fehler zu beheben.

In meinem Fall konnte ich mit dem root-Passwort eine Verbindung zu MySQL herstellen, MySQL weigerte sich jedoch aktiv, jedem Benutzer GRANT PRIVILEGES zu gewähren.

  1. Verbinden Sie sich mit MySQL als root

    mysql -u root -p
    

    geben Sie dann Ihr MySQL-Root-Passwort ein.

  2. Datenbank auswählen;

    use mysql;
    
  3. Höchstwahrscheinlich gibt es nur einen Datensatz für root in der mysql.user-Tabelle, der nur eine Verbindung von localhost (das war in meinem Fall) möglich war. Standardmäßig sollten jedoch zwei Datensätze für root vorhanden sein, einer für localhost und einer für 127.0.0.1

  4. Erstellen Sie einen zusätzlichen Datensatz für den Root-Benutzer mit Host='127.0.0.1', falls er nicht vorhanden ist.

        SET @s = CONCAT('INSERT INTO mysql.user SELECT ',
                REPLACE((SELECT GROUP_CONCAT(COLUMN_NAME) 
                         FROM INFORMATION_SCHEMA.COLUMNS
                         WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'mysql')
                ,"Host","'127.0.0.1'"),
                ' FROM mysql.user WHERE User="root"'); 
    
         PREPARE stmt FROM @s; 
         EXECUTE stmt;
    
  5. Zusätzlich können Sie mysql_upgrade -u -p ausführen, um zu sehen, ob alles in Ordnung ist.

2
ZeJur

Meine Anwendung verwendet Mura CMS und ich bin mit diesem Problem konfrontiert. Die Lösung bestand jedoch darin, dass das Kennwort zwischen meinem lokalen MySQL-Server und dem Kennwort in den Konfigurationsdateien nicht übereinstimmte. Sobald ich sie synchronisiert habe, hat es funktioniert.

1
Yoosaf Abdulla

Aus meiner Antwort hier dachte ich, das könnte nützlich sein:

Ich habe viele Schritte unternommen, um dieses Problem zu beheben. Es gibt so viele Quellen für mögliche Lösungen für dieses Problem, dass es schwierig ist, den Sinn aus dem Unsinn herauszufiltern. Endlich habe ich eine gute Lösung gefunden hier :

Schritt 1: Identifizieren der Datenbankversion

$ mysql --version

Mit MySQL sehen Sie eine Ausgabe wie diese:

$ mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Oder wie folgt für MariaDB ausgeben:

mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Notieren Sie sich, welche Datenbank und welche Version Sie ausführen, da Sie sie später verwenden werden. Als Nächstes müssen Sie die Datenbank stoppen, damit Sie manuell darauf zugreifen können.

Schritt 2: Stoppen des Datenbankservers

Um das Root-Passwort zu ändern, müssen Sie zuvor den Datenbankserver herunterfahren.

Sie können das für MySQL mit: tun

$ Sudo systemctl stop mysql

Und für MariaDB mit:

$ Sudo systemctl stop mariadb

Schritt 3: Neustart des Datenbankservers ohne Berechtigungsprüfung

Wenn Sie MySQL und MariaDB ausführen, ohne Informationen über Benutzerberechtigungen zu laden, können Sie mit root-Berechtigungen auf die Datenbankbefehlszeile zugreifen, ohne ein Kennwort anzugeben. Auf diese Weise können Sie auf die Datenbank zugreifen, ohne es zu wissen.

Dazu müssen Sie verhindern, dass die Datenbank die Grant-Tabellen lädt, in denen Informationen zu den Benutzerrechten gespeichert sind. Da dies ein gewisses Sicherheitsrisiko darstellt, sollten Sie auch das Netzwerk überspringen, um zu verhindern, dass andere Clients eine Verbindung herstellen.

Starten Sie die Datenbank, ohne die Grant-Tabellen zu laden oder Netzwerke zu aktivieren:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking &

Durch das kaufmännische Und-Zeichen am Ende dieses Befehls wird dieser Prozess im Hintergrund ausgeführt, sodass Sie Ihr Terminal weiterhin verwenden können.

Jetzt können Sie als Root-Benutzer eine Verbindung zur Datenbank herstellen, die nicht nach einem Kennwort fragen sollte.

$ mysql -u root

Stattdessen wird sofort eine Datenbank-Shell-Eingabeaufforderung angezeigt.

MySQL-Eingabeaufforderung

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

mysql>

MariaDB-Eingabeaufforderung

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

MariaDB [(none)]>

Nun, da Sie über root-Zugriff verfügen, können Sie das root-Passwort ändern.

Schritt 4: Ändern des Root-Passworts

mysql> FLUSH PRIVILEGES;

Jetzt können wir das root-Passwort ändern.

Verwenden Sie für MySQL 5.7.6 und höher sowie für MariaDB 10.1.20 und höher den folgenden Befehl:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Für MySQL 5.7.5 und ältere sowie für MariaDB 10.1.20 und ältere verwenden Sie:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Stellen Sie sicher, dass Sie new_password durch Ihr neues Kennwort Ihrer Wahl ersetzen.

Hinweis: Wenn der ALTER USER-Befehl nicht funktioniert, deutet dies normalerweise auf ein größeres Problem hin. Sie können jedoch UPDATE ... SET versuchen, stattdessen das Root-Kennwort zurückzusetzen.

[WICHTIG] Dies ist die spezifische Zeile, durch die mein bestimmtes Problem behoben wurde:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

Denken Sie daran, die Grant-Tabellen danach erneut zu laden.

In beiden Fällen sollte die Bestätigung angezeigt werden, dass der Befehl erfolgreich ausgeführt wurde.

Query OK, 0 rows affected (0.00 sec)

Das Kennwort wurde geändert, sodass Sie die manuelle Instanz des Datenbankservers jetzt anhalten und wie zuvor neu starten können.

Schritt 5: Starten Sie den Datenbankserver normalerweise neu.

Das Tutorial führt einige weitere Schritte aus, um die Datenbank neu zu starten, aber ich habe nur Folgendes verwendet:

Für MySQL verwenden Sie: $ Sudo systemctl Start von mysql

Für MariaDB verwenden Sie:

$ Sudo systemctl start mariadb

Jetzt können Sie bestätigen, dass das neue Kennwort korrekt angewendet wurde, indem Sie Folgendes ausführen:

$ mysql -u root -p

Der Befehl sollte jetzt zur Eingabe des neu zugewiesenen Kennworts auffordern. Geben Sie es ein, und Sie sollten wie erwartet Zugriff auf die Datenbank-Eingabeaufforderung erhalten.

Fazit

Sie haben jetzt Administratorzugriff auf den MySQL- oder MariaDB-Server, der wiederhergestellt wurde. Stellen Sie sicher, dass das neue Root-Passwort stark und sicher ist, und bewahren Sie es an einem sicheren Ort auf.

0
Blairg23

Ich habe viel gegoogelt, aber keine eindeutige Antwort auf mein Problem gefunden. Ich habe KeyPass verwendet, um ein sicheres Kennwort zu generieren, und es konnte erfolgreich in MySQL Workbench verwendet werden, um eine Verbindung herzustellen, jedoch nicht über die Befehlszeile. Also habe ich den psw auf einen einfachen geändert und er funktionierte auf der Kommandozeile. Ich habe es geschafft, ein sicheres Passwort zu erstellen, das vom Terminal aus eine Verbindung herstellen konnte. Mein Rat ist also, versuchen Sie es mit einem einfachen Passwort, bevor Sie alle möglichen Dinge ausprobieren.

0
Rossygnol

Ich habe dieses Problem heute bei der Installation von SugarCRM (ein kostenloses CRM) erhalten.

Das System konnte mit dem Root-Benutzer keine Verbindung zur Datenbank herstellen. Ich konnte mich definitiv als root von der Konsole aus anmelden ... was war das Problem?

Ich habe herausgefunden, dass in meiner Situation genau der gleiche Fehler aufgetreten ist. Der Grund dafür war, dass das Kennwort direkt aus den $_POST-Daten an mysql gesendet wurde. Mit anderen Worten, das <-Zeichen aus meinem Kennwort wurde an mysql als &lt; gesendet Das Passwort war falsch.

Alles andere hat nichts geholfen. Die Liste der Benutzer in mysql war korrekt, einschließlich des anonymen Benutzers (der nach den Stammeinträgen angezeigt wird.)

0
Alexis Wilke

Ich habe UTs ausgeführt und erhielt Fehlermeldungen. Ich bin nicht sicher, was das Problem war. Als ich meinen Kodierstil in INTELLIJ auf UTF8 umgestellt habe, funktionierte er wieder.

zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Kennwort ja) überwintern

dies ist meine URL db.url = jdbc: mysql: // localhost: 3306/somedb? useUnicode = true & connectionCollation = utf8_general_ci & characterSetResults = utf8 & characterEncoding = utf8

0
Sandeep M

Dieser Fehler tritt auf, wenn Sie das Kennwort bei der Installation nicht festgelegt haben, in diesem Fall die mysql mit dem Unix-Socket-Plugin.

Aber wenn Sie den Plugin-Link aus den Einstellungen (Tabelle mysql.user) löschen, tritt ein anderes Problem auf. Dies behebt das Problem nicht und führt zu einem weiteren Problem. Um den gelöschten Link zu reparieren und das Passwort ("PWD") festzulegen, gehen Sie wie folgt vor:

1) Führen Sie --skip-grant-tables wie oben beschrieben aus.

Wenn dies nicht funktioniert, fügen Sie die Zeichenfolge skip-grant-tables in Abschnitt [mysqld] von /etc/mysql/mysql.conf.d/mysqld.cnf hinzu. Starten Sie dann den Sudo-Dienst mysql neu.

2) Führen Sie mysql -u root -p aus (ändern Sie "PWD"):

update mysql.user 
    set authentication_string=PASSWORD("PWD"), plugin="mysql_native_password" 
    where User='root' and Host='localhost';    
flush privileges;

quit
then Sudo service mysql restart. Check: mysql -u root -p.

Entfernen Sie vor dem Neustart diesen String aus der Datei mysqld.cnf, wenn Sie ihn dort festgelegt haben.

@bl79 ist der Autor dieser Antwort, ich habe sie gerade neu gepostet, weil sie hilft!

0
AlexNikonov

Ich habe dieses Problem gelöst, indem ich die leeren Benutzer gelöscht habe, die von MySQL erstellt wurden. Ich habe nur root-Benutzer und meinen eigenen Benutzer. Ich habe den Rest gelöscht.

0
jjmartinez

Aktualisieren Sie die Tabelle user in der Datenbank mysql. Und ich habe ein Passwort gesetzt, wo es leer ist. Ich habe root verwendet, also habe ich das Passwort für root gesetzt.

update mysql.user set password = PASSWORD('123456') where password = '';
flush privileges;

Und dann nochmal von ATG CIM mit dem Passwort versucht und es hat gut funktioniert.

After update

http://i.stack.imgur.com/3Lchp.png

0
Mohit