安装新的laravel应用5.7并尝试迁移后,出现此错误:
Illuminate \ Database \ QueryException:SQLSTATE [HY000] [2054]服务器请求客户端未知的身份验证方法(SQL:从information_schema.tables中选择*,其中table_schema = xxx_db,table_name =迁移)
在C:\ xampp \ htdocs \ xxxxx \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:664 660 | //如果在尝试运行查询时发生异常,我们将 格式化错误661 | //包含SQL绑定的消息, 这将使此异常成为662 | //对 开发人员,而不仅仅是数据库的错误。 663 |捕获(异常 $ e){
664 |抛出新的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 \ Connector.php:70
2 PDO :: __ construct(“ mysql:host = 127.0.0.1; port = 3306; dbname = xxx_db”, “根”, ”**********”, []) C:\ xampp \ htdocs \ xxxxx \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connectors \ Connector.php:70
请使用参数-v查看更多详细信息。
答案 0 :(得分:9)
此查询解决了我的问题。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'some_password';
答案 1 :(得分:1)
请检查 phpmyadmin 上的服务器本地主机端口和 .env 文件,如 (3306,3307,8889)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=masterpass
答案 2 :(得分:1)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
您可以将 1234 更改为您的密码
php 工匠配置:清除
php artisan 迁移
注意:这对我有用。
答案 3 :(得分:0)
重新安装MySQL,选择“旧式身份验证方法”,如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)
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'),
]) : [],
],
从项目终端运行php artisan migrate
答案 4 :(得分:0)
通过在.env文件中提供DB_SOCKET,可以像这样解决此问题:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=my_db
DB_USERNAME=root
DB_PASSWORD=
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
答案 5 :(得分:0)
您可以运行Mysql installer - Community
(如果您在Windows中),然后重新配置mysql server
以使用旧式身份验证方法。应该可以轻松解决您的问题。
答案 6 :(得分:-1)
转到您的.env文件,并确保DB_CONNECTION=mysql
和数据库连接正确。