通过 docker compose 的 mySQL 在本地主机上不可用

问题描述 投票:0回答:1

我通过 docker compose 部署了 mysql,它可以通过命令

mysql --host=127.0.0.1 --user=root --password=team6 --port=53366
mysql --host=0.0.0.0 --user=root --password=team6 --port=53366
在 0.0.0.0 和 127.0.0.1 上使用,但是
mysql --host=localhost --user=root --password=team6 --port=53366
由于“错误 1045 (28000): 用户‘root’@ 的访问被拒绝”而失败。 ‘localhost’(使用密码:YES)”,为什么?

我的最终目标是让这段代码能够工作

      con = await mysql.createConnection({
        host:  'localhost',
        port:  '53366', //We need to consider adding new users
        user: 'root',
        password: 'team6',
        database: 'Yahtzee',
      });

我的撰写文件:

# Compose file for creating a database named Yahtzee in a mysql container
version: '3.8'
services:
  team6db:
    image: mysql/mysql-server:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: team6
      MYSQL_DATABASE: Yahtzee
      MYSQL_ROOT_HOST: '%'
    volumes:
      - team6db:/var/lib/mysql
      - ./Initdb.sql:/docker-entrypoint-initdb.d/Initdb.sql
      - ./InsertSampleGameRecords.sql:/docker-entrypoint-initdb.d/InsertSampleGameRecords.sql
    ports:
      - '53366:3306'

  team6phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    depends_on:
      - team6db
    environment:
      PMA_HOST: team6db
      PMA_USER: root
      PMA_PASSWORD: team
    ports:
      - '50086:80'

volumes:
  team6db:
javascript mysql docker docker-compose
1个回答
0
投票

默认情况下,每个容器都会获得一个 IP 地址。因此,在您的情况下,

localhost
主机名不起作用。您可以使用以下命令之一获取 docker 容器的 IP 地址:

docker inspect <CONTAINER_NAME>

docker inspect <CONTAINER_ID>

创建连接时使用容器的 IP 地址而不是

localhost

© www.soinside.com 2019 - 2024. All rights reserved.