簡體   English   中英

無法訪問 docker 容器中的 mysql 數據庫

[英]Can not access mysql database in docker container

我為db創建了具有以下配置的docker-compose文件:

版本:“3.8”

services:
  mysql:
    image: mysql:latest
    restart: always
    hostname: 'mysqlserver'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3333:3306'
    environment:
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=admin
      - MYSQL_DATABASE=appointments
      - MYSQL_ROOT_PASSWORD=admin
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

執行 docker-compose up 命令后,docker 下載鏡像,創建容器。 之后,我通過 bash 連接到它,並嘗試通過環境部分中描述的參數連接到 mysql,但出現錯誤:

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

我試過這樣的命令:

mysql -U admin
mysql -U root -padmin
mysql -u root

Docker 容器顯示以下日志:

docker logs 21d296993c97
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.
2021-06-14T06:20:22.743829Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 1
2021-06-14T06:20:22.751496Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-06-14T06:20:22.896967Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-06-14T06:20:23.007766Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2021-06-14T06:20:23.102185Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2021-06-14T06:20:23.102321Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2021-06-14T06:20:23.105564Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-06-14T06:20:23.131072Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

所以我在環境中指定了必要的變量< docker 沒有顯示任何錯誤,但我無法連接到 mysql。 我做錯了什么?

我為db創建了具有以下配置的docker-compose文件:

版本:“3.8”

services:
  mysql:
    image: mysql:latest
    restart: always
    hostname: 'mysqlserver'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3333:3306'
    environment:
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=admin
      - MYSQL_DATABASE=appointments
      - MYSQL_ROOT_PASSWORD=admin
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

執行 docker-compose up 命令后,docker 下載鏡像,創建容器。 之后,我通過 bash 連接到它,並嘗試通過環境部分中描述的參數連接到 mysql,但出現錯誤:

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

我試過這樣的命令:

mysql -U admin
mysql -U root -padmin
mysql -u root

Docker 容器顯示以下日志:

docker logs 21d296993c97
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-06-14 06:20:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.
2021-06-14T06:20:22.743829Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 1
2021-06-14T06:20:22.751496Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-06-14T06:20:22.896967Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-06-14T06:20:23.007766Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2021-06-14T06:20:23.102185Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2021-06-14T06:20:23.102321Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2021-06-14T06:20:23.105564Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-06-14T06:20:23.131072Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

所以我在環境中指定了必要的變量< docker 沒有顯示任何錯誤,但我無法連接到 mysql。 我做錯了什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM