PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]

Posted

技术标签:

【中文标题】PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]【英文标题】:PHP + MYSQL + Laravel - "SQLSTATE[HY000] [2002] Connection refused " [duplicate] 【发布时间】:2021-05-11 05:24:54 【问题描述】:

从后端的 php laravel 项目仪表板获取以下数据库连接问题,

"SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `sample` where `column_name` = 92ac89e3-91d1-4aee-a046-8b4e6c79e99a limit 1)"

来自文件:

/var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Connection.php

我的 docker-compose.yml 配置有:

services:
  mysql:
    image: mysql:latest
    volumes:
      - "./data/db:/var/lib/mysql"
    ports:
      - "8880:8880"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=test
      - MYSQL_USER=root
      - MYSQL_PASSWORD=password

.env 文件有以下配置: 数据库

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8880
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=password

关于缺少什么的任何想法。

尝试(编辑): 设置 DB_HOST=mysql 后,错误改变如下,

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (2054)
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] (0)

显示用户,

mysql> select user,plugin,host from mysql.user;
+------------------+-----------------------+-----------+
| user             | plugin                | host      |
+------------------+-----------------------+-----------+
| root             | caching_sha2_password | %         |
| root             | mysql_native_password | 127.0.0.1 |
| mysql.infoschema | caching_sha2_password | localhost |
| mysql.session    | caching_sha2_password | localhost |
| mysql.sys        | caching_sha2_password | localhost |
| root             | mysql_native_password | localhost |
| root             | mysql_native_password | mysql     |
+------------------+-----------------------+-----------+

也低于建议的步骤,但没有运气,

mysql> alter USER 'root'@'mysql' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)

mysql> alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)

有什么想法吗?

【问题讨论】:

您使用的是什么 PHP 版本?以下错误似乎相关:***.com/questions/50026939/… 【参考方案1】:

这意味着您在 env 中的数据不正确, 尝试将主机从 127.0.0.1 更改为 mysql。 它对我有用 像这样:-

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8880
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=password

【讨论】:

感谢@Mohamed 现在它显示以下错误,“SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL:select * from tablename where uuid = ** * 限制 1) ◀" 默认情况下,由于某种原因,mysql 8 默认插件是 auth_socket。应用程序大多数时候都希望使用密码登录到您的数据库,因此您应该运行以下命令:- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password'; 在清理用户并使用相同的命令进行更改后就可以解决问题了。

以上是关于PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu (laravel) 中使用 XAMPP 运行 PHP 和 MySQL

PHP 7.0 上的 Laravel 5.4:PDO 异常 - 找不到驱动程序 (MySQL)

PHP如何使用laravel 5将数据从数组保存到mysql

如何使用 laravel 或仅使用本机 php 更新来自 mysql 数据库的 JSON 数据?

哪种方法可以更快地使用 PHP/Laravel 从 MySQL/MariaDB 获取所有 POI

Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel