med*_*pir 6 php mysql migrate laravel laravel-artisan
安装新的 Laravel 应用程序 5.7 并尝试迁移后,出现此错误:
Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL:select * from information_schema.tables where table_schema = xxx_db and table_name = migrations)
在 C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664 660| // 如果尝试运行查询时发生异常,我们将格式化错误 661| // 包含与 SQL 的绑定的消息,这将使此异常成为 662| // 对开发人员更有帮助,而不仅仅是数据库的错误。663| 捕获(异常 $e){
664| throw new QueryException(665| $query, $this->prepareBindings($bindings), $e 666|); 667| 第668话
异常跟踪:
1 PDOException::("PDO::__construct(): 服务器请求了客户端未知的身份验证方法 [caching_sha2_password]") C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\连接器.php:70
2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=xxx_db", "root", "**********", []) C:\xampp\htdocs \xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
请使用参数 -v 查看更多详细信息。
Sha*_*Sha 26
这个查询解决了我的问题。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root@123';
Run Code Online (Sandbox Code Playgroud)
小智 10
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
Run Code Online (Sandbox Code Playgroud)
您可以将 1234 更改为您的密码
php artisan 配置:清除
php 工匠迁移
注意:这对我有用。
小智 5
重新安装 MySQL,选择 Legacy Authentication Method,如 iamge 附加的SQL Authentication method 所示
.env中的数据库参数如下
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password(if any)
Run Code Online (Sandbox Code Playgroud)config/database.php 中的数据库参数
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'database_name'),
'username' => env('DB_USERNAME', 'database_username'),
'password' => env('DB_PASSWORD', 'database_password'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
Run Code Online (Sandbox Code Playgroud)php artisan migrate从项目终端运行
解决方案在这里,分两步:
步骤1.您必须编辑/etc/mysql/my.cnf文件并将此设置附加到mysqld部分:
[mysqld]
default_authentication_plugin= mysql_native_password
Run Code Online (Sandbox Code Playgroud)
步骤2.然后运行以下mysql命令:
CREATE USER 'new_root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'new_root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
最好重启一下mysql服务。
sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)
当你安装了mysql8并且你的代码与mysql5兼容时,就会出现这个问题
| 归档时间: |
|
| 查看次数: |
24051 次 |
| 最近记录: |