Не удается получить доступ к базе данных mysql после перехода с Homestead на Sail

Я пытаюсь перенести проект Laravel 8 из Homestead в Sail. Кажется, что Sail настроен правильно, так как я могу получить доступ к веб-сайту моего проекта локально. Но я не могу войти в mysql, чтобы просмотреть базу данных:

➜  myproject git:(master) ✗ sail mysql
ERROR 1045 (28000): Access denied for user 'myproject'@'localhost' (using password: YES)

Я пытался перезапустить Docker, перезапустить свой терминал и запустить sail build --no-cache && sail up безрезультатно.

Вот соответствующая часть моего файла .env:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=myproject
DB_USERNAME=myproject
DB_PASSWORD=secret

А вот и файл docker-compose.yml:

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
            - '${HMR_PORT:-8080}:8080'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sail-mysql:
        driver: local

Обновлено: Когда я меняю свой .env на

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=myproject
DB_USERNAME=sail
DB_PASSWORD=password

Тогда ошибка

➜  myproject git:(master) ✗ sail mysql
ERROR 1044 (42000): Access denied for user 'sail'@'%' to database 'myproject'

ОШИБКА 1045 (28000): доступ запрещен для пользователя «myproject» @ «localhost» (с использованием пароля: YES) означает, что вы попадаете на сервер MySql, только имя пользователя или пароль неверны

Clint 09.05.2022 23:32

есть ли какая-либо другая служба apache/mysql, работающая на компьютере? которые могут вызвать конфликты, в этом случае вы должны их остановить.

Guille 10.05.2022 01:23

Попробуйте запустить команду php artisan sail:install, при этом смотрите свой файл /.env, раздел DB_ изменится на значения по умолчанию. После этого повторите попытку с помощью sail up.

Guille 10.05.2022 01:27

Насколько мне известно, другие службы apache/mysql не работают.

benpva16 10.05.2022 02:50

Когда я запускаю php artisan sail:install, устанавливается только DB_PASSWORD=password. DB_USERNAME остается без изменений.

benpva16 10.05.2022 02:59

И сообщение об ошибке остается прежним.

benpva16 10.05.2022 09:02
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
6
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я только что попытался подключиться к новому приложению laravel 9, и я думаю, вам нужно всего лишь изменить несколько строк, чтобы подключиться к Mysql Sail:

.env

DB_CONNECTION=mysql 
DB_HOST=host.docker.internal
DB_PORT=3306
DB_DATABASE=myproject 
DB_USERNAME=sail # <-- "sail" as default user name
DB_PASSWORD=password # <-- "password" as default password

Это необходимо, потому что "mysql" — это имя экземпляра раздела базы данных в контейнере докеров, который использование паруса взаимодействует с базой данных.

Все остальные настройки остались прежними.

Потом как раньше sail build --no-cache && sail up.

Я обновил свой вопрос результатами предложенного вами редактирования.

benpva16 10.05.2022 00:56

Я поставил DB_HOST=host.docker.internal и это сработало для меня.

benpva16 10.05.2022 23:47

Другие вопросы по теме