So beheben Sie den Fehler: SQL-Authentifizierungsmethode in Laravel-MySql unbekannt

Lesezeit: 2 Minuten

So beheben Sie den Fehler SQL Authentifizierungsmethode in Laravel MySql unbekannt
andreszam24

Ich verwende Docker und habe einen Container von Laravel Framework 5.5.25 und anderen mit mysql Ver 8.0.11 für Linux auf x86_64 (MySQL Community Server – GPL). In meiner Konfiguration von Docker Compose habe ich Folgendes:

version: "2"
services:
    mysql:
    image: mysql
        ports:
            - "3307:3306"
        command: --sql_mode=""

Wenn Laravel also versucht, eine Verbindung zu MySql herzustellen, erhalte ich diesen Fehler:

SQLSTATE[HY000] [2054] Die vom Server angeforderte Authentifizierungsmethode ist dem Client unbekannt (SQL: select * from

  • Im Moment musste ich auf die Version 5.6 von MySql zurückgreifen. aber wenn jemand weiß, wie man das Problem in der Version 8.0 lösen kann, sei willkommen. Danke schön.

    – andreszam24

    26. Mai ’18 um 23:38

  • Überprüfen Sie meine Antwort in stackoverflow.com/a/58615936/6312647 Für Ubuntu

    – CookieCat

    29. Okt ’19 um 21:57

Sie müssen Passwörter im Legacy-Stil für MySQL 8 und PHP7+ verwenden:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

  • Leute, seid vorsichtig, dieser Befehl könnte Ihren MySQL-Login-Prozess beschädigen und bekommt Access denied for user 'username'@'ip_address' die mysql stoppen und mysql im abgesicherten Modus verwenden müssen, um Ihr Passwort zurückzusetzen

    – Hama Bohel

    8. Juli ’20 um 14:19


Für die lokale Entwicklung mit Laravel Valet konnte ich dies mit dem TablePlus SQL Query Editor lösen, indem ich dies eintippe

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';

Ich hoffe es hilft auch jemandem.

Ich verwende Laravel 5.8 und der MAMP-Server hat diesen Fehler durch Hinzufügen behoben DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock in .env-Datei wie unten


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=dbname
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

Wie ich in einigen Blogs gefunden habe, liegt es im Allgemeinen an dem Socket-Problem mit der neuesten MySQL-Version

  • Für Unix wäre dies DB_SOCKET=/var/run/mysqld/mysqld.sock. Das ist definitiv die sauberste Lösung. Danke!

    – junkystu

    10. März ’21 um 10:11


Wenn Sie nach einem Laravel-Weg suchen, einfach bearbeiten config/database.php

und füge hinzu modes Array zum MySQL-Abschnitt:

 'connections' => [

        'mysql' => [
            'driver'      => 'mysql',
            'host'        => env( 'DB_HOST', '127.0.0.1' ),
            'port'        => env( 'DB_PORT', '3306' ),
            'database'    => env( 'DB_DATABASE', 'forge' ),
            'username'    => env( 'DB_USERNAME', 'forge' ),
            'password'    => env( 'DB_PASSWORD', '' ),
            'unix_socket' => env( 'DB_SOCKET', '' ),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'modes'       => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],
    ],

1641751944 840 So beheben Sie den Fehler SQL Authentifizierungsmethode in Laravel MySql unbekannt
miau2x

Vergessen Sie nicht, einen Anwendungsschlüssel zu generieren und zuzuweisen auf APP_KEY variabel in deinem .env Datei.

php artisan key:generate --show

Dann Cache leeren:

php artisan config:cache

.

231790cookie-checkSo beheben Sie den Fehler: SQL-Authentifizierungsmethode in Laravel-MySql unbekannt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy