Я пытаюсь перенести проект 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'
есть ли какая-либо другая служба apache/mysql, работающая на компьютере? которые могут вызвать конфликты, в этом случае вы должны их остановить.
Попробуйте запустить команду php artisan sail:install, при этом смотрите свой файл /.env, раздел DB_ изменится на значения по умолчанию. После этого повторите попытку с помощью sail up.
Насколько мне известно, другие службы apache/mysql не работают.
Когда я запускаю php artisan sail:install, устанавливается только DB_PASSWORD=password. DB_USERNAME остается без изменений.
И сообщение об ошибке остается прежним.






Я только что попытался подключиться к новому приложению laravel 9, и я думаю, вам нужно всего лишь изменить несколько строк, чтобы подключиться к Mysql Sail:
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.
Я обновил свой вопрос результатами предложенного вами редактирования.
Я поставил DB_HOST=host.docker.internal и это сработало для меня.
ОШИБКА 1045 (28000): доступ запрещен для пользователя «myproject» @ «localhost» (с использованием пароля: YES) означает, что вы попадаете на сервер MySql, только имя пользователя или пароль неверны