返回

如何解决 Laravel Sail 中的数据库连接拒绝错误?

php

解决 Laravel Sail 中的数据库连接拒绝错误

前言

当你尝试通过 Laravel Sail 连接数据库时,你可能会遇到连接被拒绝的错误。这可能是由于各种原因造成的,包括 Docker 容器未运行、数据库配置不正确或防火墙阻止连接。本文将逐步指导你解决此错误,让你能够恢复与数据库的连接。

故障排除步骤

1. 检查 Docker 容器状态

首先,确保你的 Docker 容器正在运行。你可以通过运行 docker-compose ps 命令来检查容器状态。如果容器未运行,请使用 docker-compose up -d 命令启动它。

2. 检查数据库配置

接下来,你需要验证 .env 文件中的数据库配置是否正确。确保以下键具有以下值:

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel8
DB_USERNAME=root
DB_PASSWORD=password

3. 运行迁移

如果数据库配置正确,请使用 sail artisan migrate 命令运行数据库迁移。这将创建必要的数据库表和数据。

4. 重启 Web 服务器

重新启动 Sail Web 服务器,使更改生效:

sail down
sail up -d

5. 检查防火墙设置

确保防火墙未阻止与 MySQL 服务器的连接。MySQL 默认监听端口 3306。在 macOS 上,你可以使用 sudo lsof -i :3306 命令检查防火墙设置。在 Windows 上,请检查 Windows 防火墙中是否允许 MySQL 连接。

6. 重新尝试连接

按照上述步骤操作后,再次尝试通过 Sail 连接数据库。如果问题仍然存在,请检查数据库日志以查找其他线索。

其他提示

  • 如果正在使用自定义 Docker 映像,请确保它已正确配置。
  • 尝试将 DB_HOST 设置为容器的 IP 地址,而不是 mysql
  • 如果没有任何方法奏效,请尝试卸载并重新安装 Sail:
sail down
rm -rf vendor/bin
rm -rf .sail

然后重新运行 sail up -d

结论

通过遵循这些步骤,你应该能够解决 Laravel Sail 中的数据库连接拒绝错误。记住,故障排除过程需要耐心和细致的观察,但只要坚持不懈,你一定能解决问题。

常见问题解答

1. 为什么我看到连接被拒绝错误?

这可能是由于多种原因造成的,包括 Docker 容器未运行、数据库配置不正确或防火墙阻止连接。

2. 如何检查 Docker 容器状态?

运行 docker-compose ps 命令来检查容器状态。

3. 如何运行数据库迁移?

使用 sail artisan migrate 命令运行数据库迁移。

4. 如何重启 Web 服务器?

运行以下命令重启 Web 服务器:

sail down
sail up -d

5. 如何检查防火墙设置?

在 macOS 上,使用 sudo lsof -i :3306 命令检查防火墙设置。在 Windows 上,检查 Windows 防火墙中是否允许 MySQL 连接。