首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用docker-compose时,为什么mysql会拒绝访问

使用docker-compose时,为什么mysql会拒绝访问
EN

Stack Overflow用户
提问于 2018-06-13 18:01:41
回答 1查看 3.9K关注 0票数 0

我正在尝试为开发数据库创建mySQL容器。

我的应用是由golang制作的。

现在,我创建了docker-compose.yml来运行APP & DB。

mySQL容器已创建,我可以启动它,但如果我试图通过数据库客户端(Sequel Pro)连接此数据库,则显示拒绝访问。

这是我的docker-compose.yml

代码语言:javascript
复制
version: '3' 
  services:   app:
    build:
      context: .
      dockerfile: "Dockerfile"
    ports:
     - "8080:8080"
    volumes:   mysql:
    image: mysql:5.7.10
    environment:
      MYSQL_ROOT_PASSWORD: 'pass'
    ports:
      - '3306:3306'
    volumes:
      - mysql-data:/var/lib/mysql volumes:   mysql-data:
    driver: local

我做到了

代码语言:javascript
复制
$ docker-compose build

代码语言:javascript
复制
$ docker-compose up -d

然后创建容器,如果使用exec命令,mySQL如下

$ docker ps -a

代码语言:javascript
复制
1f7540fdedc1        mysql:5.7.10        "/entrypoint.sh mysq…"   1 second ago             Up 2 seconds                0.0.0.0:3306->3306/tcp   XXX_mysql_1

在那之后,如果我尝试用sequel pro连接这个数据库,我可以在kitematic中看到这条消息。

代码语言:javascript
复制
Access denied for user 'root'@'172.18.0.1' (using password: YES)

ip、用户名、密码、端口必须正确。

此外,如果我使用kitematic为mySQL创建停靠容器,我可以连接到该容器。

我不知道为什么会出现拒绝访问的情况。

Screenshot when access denied shows up

EN

回答 1

Stack Overflow用户

发布于 2020-05-07 17:24:03

我已经解决了这个类似的问题。确保您拥有mysql版本的最新镜像。docker pull mysql:5.7.10

然后删除关联的卷(如果存在数据,则备份)。如果你正在使用docker-compose yml version3,你应该像MYSQL_ROOT_PASSWORD=password一样映射你的环境。通过转到容器并运行命令echo $MYSQL_ROOT_PASSWORD来验证它是否正确设置。

如果您从主机登录,请尝试传递协议标志。mysql -u root -p --protocol=tcp (也可以传递主机localhost或127.0.0.1) -h 127.0.0.1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50834428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档