无法将mysql与laravel(docker)连接
我对laravel和docker非常陌生,我尝试将mysql连接到php容器(laravel)。 我原以为在laravel项目中设置了docker-compose.yml和env文件 此外,我还可以连接到容器内的mysql数据库 我迁移php artisan时出现了一个错误:无法将mysql与laravel(docker)连接,mysql,laravel,docker,Mysql,Laravel,Docker,我对laravel和docker非常陌生,我尝试将mysql连接到php容器(laravel)。 我原以为在laravel项目中设置了docker-compose.yml和env文件 此外,我还可以连接到容器内的mysql数据库 我迁移php artisan时出现了一个错误: SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = my
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = myapp and table_name = migrations and table_type = 'BASE TABLE')
有人知道发生了什么事吗
docker-compose.yml
version: '3'
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./myapp/:/var/www
nginx:
image: nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- ./myapp/:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: root1234
MYSQL_DATABASE: myapp
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- 3306:3306
环境
您正在运行mysql 8,用于身份验证机制。尝试将以下内容添加到mysql容器的命令中:
--default-authentication-plugin=mysql_native_password
MySQL版本8.0.4已将默认身份验证机制从MySQL_native_password更改为缓存_sha2_password。问题是大多数客户机尚未实现通过此机制进行身份验证的能力。在Laravel的例子中,这依赖于PHP,PHP在v7.4中才开始支持这一点
我个人还没有尝试在我的一个项目中配置此功能,我不确定Laravel是否支持此“开箱即用”功能。最终解决了此问题。 我变了 DB_HOST=127.0.0.1到DB_HOST=DB,那么它就成功了 “DB_HOST=docker-compose.yml上mysql容器的服务名称”
这次我的mysql容器名是db,所以需要将db_主机命名为db。尝试使用mysql:5.7映像(即mysql的5.7版)谢谢您的建议!我改变了身份验证机制。并显示另一个错误。SQLSTATE[HY000][2002]没有这样的文件或目录(SQL:select*from information_schema.tables,其中table_schema=myapp和table_name=migrations,table_type='BASE table',您仍然需要创建数据库。PHP artisan migrate:fresh,我相信也可以。如果我有另一个docker与MySQL和PHPMyAdmin组合。它是否与此lamp环境连接。如果是,那么如何连接?#knknknk@k)nkn
--default-authentication-plugin=mysql_native_password