【问题标题】:Docker Compose - Creating and connecting to mysql containerDocker Compose - 创建并连接到 mysql 容器
【发布时间】:2019-01-17 20:51:10
【问题描述】:

很难在 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'

这几天一直在做...希望有人能提供帮助!

【问题讨论】:

  • 如果您使用高达...R29u 的密码,在# 之前停止,它是否有效?如果您将 MYSQL_ROOT_PASSWORD 值放在单引号中,它是否有效?
  • 感谢大卫的建议,但这不起作用

标签: mysql docker docker-compose containers


【解决方案1】:

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

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

【讨论】:

  • 他指出它在外部也不起作用。
  • 你是对的。我误读了这个问题,并认为他试图将容器连接到在主机上运行的 MySql 服务器。也许尝试将:“-'MYSQL_ROOT_HOST=%'”添加到您的环境部分?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    您也可以调用docker ps,找到您的容器并执行docker rm -v &lt;CONTAINER_NAME&gt;。之后打开你的容器。

    【讨论】:

    • 是的,我曾尝试在我访问过的类似网站之后进行此操作。谢谢你的建议
    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多