Docker Compose-创建并连接到mysql容器

时间:2019-01-17 20:51:10

标签: mysql docker docker-compose containers

在docker中尝试使用mysql时遇到困难。我已经使用docker-compose运行了该容器,但是我无法通过phpmyadmin,workbench或tableplus等任何工具连接到数据库。

我已直接连接到正在运行的容器并运行

mysql -uroot -p

并输入我已经通过的root密码,但这失败,并显示以下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这是我的docker-compose.yml文件:

version: '3'

services:
    db:
    image: mysql
    restart: always
    environment:
      MYSQL_DATABASE: quotes
      MYSQL_USER: quotes
      MYSQL_PASSWORD: P@KhzKZp)56sU8n+
      MYSQL_ROOT_PASSWORD: +\VrLG*<t5sq[\\shR29u#n~A3^Jp*
    ports:
      - '3306:3306'
    volumes:
      - /private/mdbdata/quotes:/etc/mysql/conf.d
    expose:
      - '3306'

已经有好几天了...希望有人能帮忙!

3 个答案:

答案 0 :(得分:0)

我认为您的容器正在'localhost'上寻找MySQL服务器,该服务器将无法工作。容器的“本地主机”是容器本身,而不是运行容器的主机。

您应该能够使用主机IP地址访问MySQL服务器。

答案 1 :(得分:0)

您是否尝试过here提供的解决方案?基本上,如果您有一个先前运行的容器,则必须明确清除它,因为Docker会跟踪先前实例化的容器中的root passwds(通过 volumes )。许多工具都会发生这种情况,这不是MySQL容器所独有的。一个简单的docker-compose rm -v就足够了,然后启动您的容器。这基本上是从磁盘上删除旧卷,从先前的容器实例中删除所有数据

您还可以调用docker ps,找到您的容器并执行docker rm -v <CONTAINER_NAME>。之后拿起你的容器。

答案 2 :(得分:0)

最终解决了这个问题……我不得不从密码字符串中删除所有特殊字符。

我讨厌在字符串周围添加单引号和双引号,以查看是否允许使用特殊字符,但这仍然失败。密码必须为字母数字。