Fra*_*llc 6 php mysql symfony docker
我第一次尝试使用Docker.有一个LEMP堆栈并运行,但我无法连接到MYSQL数据库.不在我的Symfony应用程序上,而不在PHPMyAdmin上.应用程序返回以下错误代码:
驱动程序中发生异常:SQLSTATE [HY000] [2002]连接被拒绝
这是我的docker-compose.yml:
nginx:
image: tutum/nginx
ports:
- "80:80"
links:
- phpfpm
volumes:
- ./nginx/default:/etc/nginx/sites-available/default
- ./nginx/default:/etc/nginx/sites-enabled/default
- ./logs/nginx-error.log:/var/log/nginx/error.log
- ./logs/nginx-access.log:/var/log/nginx/access.log
phpfpm:
build: phpfpm/
ports:
- "9000:9000"
volumes:
- ./public:/usr/share/nginx/html
mysql:
image: mariadb
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: admin
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
links:
- mysql
ports:
- 8183:80
environment:
MYSQL_USERNAME: admin
MYSQL_ROOT_PASSWORD: admin
PMA_ARBITRARY: 1
Run Code Online (Sandbox Code Playgroud)
Dockerfile PHPFPM:
FROM php:fpm
RUN docker-php-ext-enable opcache
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq-dev \
&& docker-php-ext-install mysqli pdo_pgsql pdo_mysql
Run Code Online (Sandbox Code Playgroud)
GitHub网址:https://github.com/MolengraafFrank/DockerSymfony
有人可以帮帮我吗?感谢您的时间.
Eme*_*bah 16
我遇到了这个挑战,因为我正在运行 3 个具有不同 IP 地址的不同容器
db - 172.18.0.3 - container for MYSQL
app - 172.18.0.2 - container for Laravel app
Run Code Online (Sandbox Code Playgroud)
所以我通过编辑我的 Laravel .env 文件来修复它
DB_CONNECTION=mysql
DB_HOST=172.18.0.3
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=username
...
Run Code Online (Sandbox Code Playgroud)
获取你的容器IP地址。从您的 docker 主机
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
Run Code Online (Sandbox Code Playgroud)
更新:对于最新的 docker 版本并基于您的 docker-compose.yml 中的服务名称“mysql”
mysql:
image: mariadb
ports:
- 3306:3306
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=username
Run Code Online (Sandbox Code Playgroud)
DB_HOST 是 docker-compose.yml 中定义的 MySQL 服务名称
我已经设法使用 mysql 命令行工具连接到 mysql 实例,这是我使用的命令 - mysql -u root -p -h 127.0.0.1,以及输入管理员密码。这对你来说是一个足够的解决方案吗?
'[2002]连接被拒绝'意味着您可以访问数据库服务器,但您无权访问该用户(在您的情况下为admin).默认情况下,mariadb有一个root用户,密码由MYSQL_ROOT_PASSWORD给出,该用户可以从任何服务器(%)连接.
如果要对数据库使用过度登录,则必须在数据库服务器中创建它,并在所选位置的数据库上正确授予.
一个过度的问题是你在数据库服务器'mysql'上运行,默认情况下phpmyadmin尝试连接到'db'.所以你必须添加
PMA_HOST: mysql
Run Code Online (Sandbox Code Playgroud)
给你Phpmyadmin环境.如果你使用默认配置(与root连接到数据库服务器),我认为MYSQL_USERNAME和PMA_ARBITRARY是无用的
| 归档时间: |
|
| 查看次数: |
22475 次 |
| 最近记录: |