laravel:sqlstate[hy000][2054]服务器请求的身份验证方法客户端未知

oyjwcjzk  于 2021-06-18  发布在  Mysql
关注(0)|答案(5)|浏览(543)

安装新的laravel应用程序5.7并尝试迁移后,出现以下错误:
illuminate\database\queryexception:sqlstate[hy000][2054]服务器请求的身份验证方法客户端未知(sql:select*from information\u schema.tables,其中table\u schema=\u db和table\u name=migrations)
位于c:\xampp\htdocs\xx\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::uu construct():服务器请求的身份验证方法客户端未知[缓存\u sha2\u密码]”)c:\xampp\htdocs\xx\vendor\laravel\framework\src\illuminate\database\connectors\connector。php:70
2 pdo::uu构造(“mysql:host=127.0.0.1;端口=3306;dbname=\u db“,”root“,”********“,[])c:\xampp\htdocs\xx\vendor\laravel\framework\src\illuminate\database\connectors\connector。php:70
请使用参数-v查看更多详细信息。

u1ehiz5o

u1ehiz5o1#

你可以跑了 Mysql installer - Community (如果您在windows中)然后重新配置 mysql server 使用旧身份验证方法。它应该是解决你的问题没有痛苦。

92dk7w1h

92dk7w1h2#

转到.env文件并确保 DB_CONNECTION=mysql 和db连接正确。

bbuxkriu

bbuxkriu3#

重新安装mysql,选择旧式身份验证方法,如iamge-attached-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 从项目终端

f8rj6qna

f8rj6qna4#

通过在.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
6qftjkof

6qftjkof5#

这个问题解决了我的问题。

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

相关问题