Laravel throwing QueryException после обновления MySQL до 8.0

Mehrdad Shokri спросил: 10 мая 2018 в 03:59 в: php

После обновления MySQL до версии 8.0 любая попытка переноса исключения брошюр базы данных указывает, что unknown authenticaion method

  [Illuminate\Database\QueryException]                                         
  SQLSTATE[HY000] [2054] The server requested authentication method unknown t  
  o the client (SQL: select * from information_schema.tables where table_sche  
  ma = wiki and table_name = migrations)                                         [PDOException]                                                               
  SQLSTATE[HY000] [2054] The server requested authentication method unknown t  
  o the client                                                                   [PDOException]                                                               
  PDO::__construct(): The server requested authentication method unknown to t  
  he client [caching_sha2_password]                                            

1 ответ

Mehrdad Shokri ответил: 10 мая 2018 в 03:59

Это связано с тем, что MySQL 8.0.4 изменил механизм проверки подлинности по умолчанию на caching_sha2_password. (второе предложение)

Чтобы выполнить аутентификацию с помощью .env DB_USERNAME и DB_PASSWORD, выполните следующие действия:

  • Добавьте default-authentication-plugin=mysql_native_password в свой my.cnf

    В CentOS / RHEL он находится на /etc/my.cnf.
    В Debian / Ubuntu я уверен, что он находится на /etc/mysql.
    Это вернет обратно механизм аутентификации по умолчанию обратно к имени пользователя.

  • Войдите в свою mysql и выполните процедуру

    • Удалите существующего пользователя базы данных и заново создайте его.

      Чтобы удалить пользователя:
      DROP USER yourUser@localhost; (с предположением, что ваш db является локальным)

    • Создать другого пользователя
      CREATE USER user@localhost IDENTIFIED BY 'yourpassword';
      GRANT ALL PRIVILEGES ON dbName.* TO user@localhost;

    • Скрытые привилегии
      FLUSH PRIVILEGES;

    Выход из mysql и запуск:

    On Centos / RHEL: systemctl restart mysqld

    Debian / Ubuntu: systemctl restart mysql.service

    Я мог бы запускать и запускать без удаления базы данных.

    Литература:
    • https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-4.html#mysqld-8-0 -4 -security
    • https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/
    • https://github.com/ laradock / laradock / вопросы / 1392

    Дополнительное видео по вопросу: Laravel throwing QueryException после обновления MySQL до 8.0

    PHP Laravel 5 login tutorial with mysql database. laravel tutorials.

    Angular 6 + Laravel + MySQL - How to Build a CRUD Todo List App

    laravel 5 3 CRUD - Insert Edit Update and Delete