首页 > 解决方案 > Laravel Sai 无法从主机连接到数据库

问题描述

我安装了 Ubuntu 20.04 lts。我已经用 Laravel 帆安装了一个 Laravel 项目。好的。安装 laravel 后,我使用“sail php artisan migrate”运行迁移。

该项目完美运行。我还安装了微风进行身份验证。我可以创建用户并登录。问题来自 Ubuntu,它似乎无法连接到该数据库。在这里你可以看到我的 docker-compose.yml 文件的配置。我已将 mysql 端口更改为 3307,因为它会产生冲突:

mysql:
    image: 'mysql:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3307}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_DATABASE: '${DB_DATABASE}'
        MYSQL_USER: '${DB_USERNAME}'
        MYSQL_PASSWORD: '${DB_PASSWORD}'
        MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    volumes:
        - 'sailmysql:/var/lib/mysql'
    networks:
        - sail
    healthcheck:
      test: ["CMD", "mysqladmin", "ping"]

这是我的 .env 文件

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=root
DB_PASSWORD=

在 Ubuntu 中,我安装了 mysql-server 和 tableplus。我打开控制台并以 root 身份打开 tableplus

jorge@jorge-VirtualBox:~$ sudo su
[sudo] contraseña para jorge: 
root@jorge-VirtualBox:/home/jorge# tableplus

一旦我以 root 身份打开 tableplus,我就会配置要连接的数据。

表加

它告诉我数据库不存在。我不知道该怎么办。我会很感激你的帮助!

标签: phpmysqllaraveldocker

解决方案


由于我遇到了类似的问题,并且还将我的默认 laravel 航行端口更改为 3307。这个配置终于对我有用:

.env 文件(设置 your_project_name):

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3307
DB_DATABASE=your_project_name
DB_USERNAME=sail
DB_PASSWORD=password

docker-compose.yml(更改端口并添加 MYSQL_TCP_PORT 定义)

mysql:
    image: 'mysql:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3307}:3307'
    environment:
        MYSQL_TCP_PORT: '${DB_PORT}'
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_DATABASE: '${DB_DATABASE}'
        MYSQL_USER: '${DB_USERNAME}'
        MYSQL_PASSWORD: '${DB_PASSWORD}'
        MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    volumes:
        - 'sailmysql:/var/lib/mysql'
    networks:
        - sail
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
      retries: 3
      timeout: 5s

推荐阅读