简体   繁体   English

无法访问 docker 容器中的 mysql 数据库

[英]Can not access mysql database in docker container

I created docker-compose file with such configuration for db:我为db创建了具有以下配置的docker-compose文件:

version: "3.8"版本:“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:

after executing docker-compose up command, docker downloads image, creates container.执行 docker-compose up 命令后,docker 下载镜像,创建容器。 After that I connect to it via bash and try to connect to mysql via params described in environment section, but I get error:之后,我通过 bash 连接到它,并尝试通过环境部分中描述的参数连接到 mysql,但出现错误:

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

I tried such commands as:我试过这样的命令:

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

Docker container shows these logs: 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.

So I specified necessary variables in environment< docker does not show any error, but I can not connect to mysql.所以我在环境中指定了必要的变量< docker 没有显示任何错误,但我无法连接到 mysql。 What I'm doing wrong?我做错了什么?

I created docker-compose file with such configuration for db:我为db创建了具有以下配置的docker-compose文件:

version: "3.8"版本:“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:

after executing docker-compose up command, docker downloads image, creates container.执行 docker-compose up 命令后,docker 下载镜像,创建容器。 After that I connect to it via bash and try to connect to mysql via params described in environment section, but I get error:之后,我通过 bash 连接到它,并尝试通过环境部分中描述的参数连接到 mysql,但出现错误:

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

I tried such commands as:我试过这样的命令:

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

Docker container shows these logs: 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.

So I specified necessary variables in environment< docker does not show any error, but I can not connect to mysql.所以我在环境中指定了必要的变量< docker 没有显示任何错误,但我无法连接到 mysql。 What I'm doing wrong?我做错了什么?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM