为什么访问被拒绝发生在mysql上,使用docker-compose

时间:2018-06-13 10:01:41

标签: mysql docker-compose

我正在尝试为开发DB创建mySQL容器 我的应用程序是由golang制作的。

现在,我创建了docker-compose.yml来运行APP& DB。
mySQL容器已创建,我可以启动它,但是当我尝试通过数据库客户端(Sequel Pro)尝试连接此数据库时,会显示Access denied。

它是我的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

之后,如果我尝试将此数据库与续集专业版连接起来,我可以用kitematic看到此消息。

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

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

另外,如果我使用kitematic为mySQL创建docker容器,我可以连接容器。

我不知道访问被拒绝的原因。

Screenshot when access denied shows up

1 个答案:

答案 0 :(得分:0)

我已解决此类似问题。确保您具有mysql版本的最新映像。 docker pull mysql:5.7.10

然后删除关联的卷(如果有现有数据,请备份)。如果您使用的是docker-compose yml版本3,则应映射您的环境,例如MYSQL_ROOT_PASSWORD=password。通过转到容器并运行命令echo $MYSQL_ROOT_PASSWORD,验证其设置正确。

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