尝试使用 WSL 和 XAMPP 连接 Laravel/MySQL

问题描述 投票:0回答:2

首先我将解释我的设置:我在 WSL(Linux 的 Windows 子系统)中运行 Laravel,并且在 Windows 上有 XAMPP。 我想做的是在 XAMPP 上运行 MySQL 服务并将其与我的 Laravel 项目连接。我已经修改了我的 .env 文件设置 root 密码,并且我已经使用 phpMyAdmin 创建了“laravel”数据库。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=mypassword

通过此设置,我尝试在 WSL 中运行

php artisan migrate

但是我收到了这个错误

SQLSTATE[HY000] [2002] 连接被拒绝

然后我将 DB_HOST 更改为 localhost,这是一个常见的解决方案,但后来我收到了另一个错误。

SQLSTATE[HY000] [2002] 没有这样的文件或目录

现在我不知道还能做什么。我被困住了。任何帮助将不胜感激。

php mysql laravel windows-subsystem-for-linux
2个回答
1
投票

您似乎是在 Windows 下通过 XAMPP 运行 MySQL,而不是在 Linux(Ubuntu?)中。您应该在 WSL2 中运行 MySQL。

看这个—— WSL 堆栈溢出问题


1
投票

经过大量挖掘,我找到了解决方案。 首先,WSL 不能使用 localhost 与 XAMMP 通信,但它应该使用

$(hostname).local
。您可以通过在 WSL 终端中输入
ping $(hostname).local
进行测试:关键字将被主机名和 IP 替换。

第二点,应用程序将从“外部”地址连接,而不是本地主机。因此,进入 phpMyAdmin 界面,选择 Flask 正在使用的 MySQL 用户,进入“登录信息”并在“主机”部分选择“任何主机:%”。我在这里找到了指南。 请注意,现在该用户可以通过您的网络访问,因此可以选择一个安全密码。

更具体地说,我在 WSL 中运行 python Flask 应用程序时遇到了类似的问题,而 XAMPP 在 Windows 中运行。在应用程序中,我必须更改 SQLALCHEMY_DATABASE_URI 变量以适应不同的本地主机。该变量应如下所示:

export SQLALCHEMY_DATABASE_URI="mysql+pymysql://sql_user:sql_password@$(hostname).local/YOUR_DATABASE"

编辑 2024 年:我在新机器上安装了 WSL 2,但它不再起作用了。它适用于 @$(hostname) 而不是 @$(hostname).local这里有关于这个问题的讨论。我还根据此评论安装了libnss-mdns,但我不确定这是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.