【问题标题】:Attempt on Laravel/MySQLconnection with WSL and XAMPP尝试使用 WSL 和 XAMPP 连接 Laravel/MySQL
【发布时间】:2020-07-04 21:25:51
【问题描述】:

首先我将解释我的设置:我在 WSL(Linux 的 Windows 子系统)中运行 Laravel,并且在 Windows 上安装了 XAMPP。 我要做的是在 XAMPP 上运行 MySQL 服务并将其与我的 Laravel 项目连接。我修改了设置 root 密码的 .env 文件,并使用 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


【解决方案1】:

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

看到这个--- WSL stack overflow issue

【讨论】:

  • 是的,这就是我想要做的。但我不知道这是 WSL2 的问题。然后尝试在 WSL2 中运行 MySQL,它按你说的那样工作,但我花了一些时间让它工作。我想现在不可能做我想做的事。谢谢。
【解决方案2】:

经过大量挖掘,我找到了解决方案。 首先,不能使用 localhost 与 XAMMP 通信,但应该使用$(hostname).local。您可以通过在 WSL 终端中输入 ping $(hostname).local 来测试它:关键字将替换为主机名和 IP。

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

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

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

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2012-12-04
    • 2017-07-16
    • 2022-12-04
    • 2012-09-18
    • 2020-11-14
    • 2023-01-15
    • 2020-07-09
    相关资源
    最近更新 更多