php – 如何使用laravel运行MySql 8?

我很难让MySQL 8工作.这是我每次尝试PHP工匠迁移时出现的错误.到目前为止,我只重新安装了一次MysqL,因为我不想再对正在发生的事情造成伤害.我已经从其他可能的答案中编辑了database.PHP,但这似乎也不起作用.我看到了一个可能的答案,这是因为MysqL 8的sha256加密了root密码,这就是为什么我要回到MysqL 5.7,我已经查找了与laravel工作正常.虽然,我想保持最新的软件包并保留MysqL 8,只要我可以使用laravel.

PHP 7.2

如何让MysqL 8与Laravel协同工作?

 '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' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'version' => 8,
            'modes' => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],

Illuminate\Database\QueryException  : sqlSTATE[HY000] [2054] The server requested authentication method unkNown to the client (sql: select * from information_schema.tables where table_schema = laravel_tut and table_name = migrations)

  at /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connection.PHP:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with sql, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("PDO::__construct(): The server requested authentication method unkNown to the client [caching_sha2_password]")
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.PHP:70

  2   PDO::__construct("MysqL:host=127.0.0.1;port=3306;dbname=laravel_tut", "root", "fdgkadgaf9g7ayaig9fgy9ad8fgu9adfg9adg", [])
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.PHP:70

更新我要修复的另一个修正:
通过全新安装MysqL,我选择了NO来加密设置中的密码(使用传统加密,而不是SHA加密),它开始与Laravel一起使用没有任何问题 – 只需使用长而强的密码.
安装步骤的参考:
https://www.percona.com/blog/wp-content/uploads/2018/05/Installing-MySQL-8.0-on-Ubuntu-2.png

解决方法:

由于PHP不了解caching_sha2_password,请将用户设置回MysqL_native_password:

ALTER USER 'forge'@'localhost'
IDENTIFIED WITH MysqL_native_password BY 'new_password'

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...