为什么mysql和docker compose会拒绝访问

u4vypkhs  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(920)

我正在尝试为开发数据库创建mysql容器。
我的应用程序是golang做的。
现在,我创建docker-compose.yml来运行app&db。
mysql容器已经创建,我可以启动它,但是当我试图通过db客户端(sequel pro)连接到这个db时,会显示拒绝访问。
这是我的docker-compose.yml

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

是的

$ docker-compose build

$ docker-compose up -d

然后创建容器,mysql如下,如果exec命令
$docker ps-a码

1f7540fdedc1        mysql:5.7.10        "/entrypoint.sh mysq…"   1 second ago             Up 2 seconds                0.0.0.0:3306->3306/tcp   XXX_mysql_1

在那之后,如果我尝试连接这个db和sequel pro,我可以在kitematic中看到这个消息。

Access denied for user 'root'@'172.18.0.1' (using password: YES)

ip、用户名、密码、端口必须正确。
另外,如果我使用kitematic为mysql创建docker容器,我可以连接到该容器。
我不知道为什么拒绝访问会出现。
显示拒绝访问时的屏幕截图

daupos2t

daupos2t1#

我已经解决了类似的问题。确保您拥有最新的mysql版本的映像。 docker pull mysql:5.7.10 .
然后删除关联的卷(如果存在数据,则进行备份)。如果您使用的是docker compose yml版本3,您应该将您的环境Map为 MYSQL_ROOT_PASSWORD=password . 通过转到容器并运行命令来验证设置是否正确 echo $MYSQL_ROOT_PASSWORD .
如果您是从主机登录,请尝试传递协议标志。 mysql -u root -p --protocol=tcp (也可以传递主机localhost或127.0.0.1) -h 127.0.0.1

相关问题