【发布时间】:2015-05-29 10:53:33
【问题描述】:
我在一个 docker 项目中有一个 Symfony2 应用程序,使用 docker-compose。
尝试对我的数据库运行架构更新时出现以下错误。
[Doctrine\DBAL\Exception\DriverException]
An exception occured in driver: SQLSTATE[HY000] [1130] Host '172.17.0.129' is not allowed to connect to this MySQL server
我的 docker-compose.yml 文件:
api:
build: images/nginx
ports:
- "80:80"
- "9000:9000"
links:
- mysql:mysql
- memcached:memcached
- redis:redis
- elasticsearch:elasticsearch
- rabbitmq:rabbitmq
volumes:
- www/api:/var/www
- sites/api:/etc/nginx/sites-enabled
socketserver:
build: images/socketserver
links:
- rabbitmq:rabbitmq
ports:
- "5000:5000"
volumes:
- www/socketserver:/var/www
- sites/socketserver:/etc/nginx/sites-enabled
adminpanel:
build: images/adminpanel
ports:
- "8001:8001"
volumes:
- www/adminpanel:/var/www
- sites/adminpanel:/etc/nginx/sites-enabled
mysql:
image: mysql:latest
expose:
- "3306"
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: api
MYSQL_USER: root
MYSQL_PASSWORD: [REDACTED]
MYSQL_ROOT_PASSWORD: [REDACTED]
memcached:
image: tutum/memcached
ports:
- "11211:11211"
dns: 3.3.3.3
environment:
MEMCACHED_PASS: [REDACTED]
redis:
image: tutum/redis
ports:
- "6379:6379"
dns: 4.4.4.4
environment:
REDIS_PASS: [REDACTED]
elasticsearch:
image: tutum/elasticsearch
ports:
- "9200:9200"
dns: 5.5.5.5
environment:
ELASTICSEARCH_USER:[REDACTED]
ELASTICSEARCH_PASS:[REDACTED]
rabbitmq:
image: dockerfile/rabbitmq
dns: 6.6.6.6
ports:
- "5672:5672"
- "15672:15672"
我的 Symfony2 参数.yml:
parameters:
secret: [REDACTED]
locale: en
mailer_transport: smtp
mailer_host: [REDACTED]
mailer_user: test@theladbible.com
mailer_password: [REDACTED]
database_driver: pdo_mysql
database_host: mysql
database_port: 3306
database_name: api
database_user: root
database_password: [REDACTED]
jms_serializer.cache_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy
我尝试了多种不同的方法。我无法通过 localhost 或 127.0.0.1 连接。放置“mysql”似乎链接到数据库容器正确的数据库地址,但我仍然得到上面显示的错误。
我是 Docker 新手,所以我可能误解了一些基本原理,如果是这种情况,我深表歉意。
我怀疑我可能需要添加正确的用户权限?我也无法直接连接到数据库容器来执行此操作。
提前致谢!
【问题讨论】:
-
mysql用户是
root@'localhost'还是root@'%'?从<a_user>@'localhost'到您的 mysql 数据库的连接将不起作用,因为您的请求不是本地的。 stackoverflow.com/questions/19101243/… -
您还应该查看registry.hub.docker.com/_/mysql 中的注意事项部分
-
@CélineAussourd 从 y parameters.yml 文件中可以看到,主机设置为
database_host: mysql,它指向 mysql 容器分配的任何 IP 地址。由于您刚才指出的原因,我没有指向 localhost 或 172.0.0.1。现在看看警告,我不完全确定这就是我的问题。我想可能是这样,但我不确定如何解决。 -
我不完全确定为什么有人对我投了反对票...
-
我的意思是您的 MySQL 数据库可能未配置为允许来自远程用户的传入连接。你的 parameters.yml 很好。您是否尝试使用另一个
MYSQL_USER而不是root设置对数据库的访问? (这也意味着您的 parameters.yml 发生了变化)