mysql-docker-container - 错误 1045 (28000): 用户 'root'@'localhost' 访问被拒绝(使用密码:NO)

Mad*_*dhu 5 mysql docker docker-compose

我正在使用下面的 docker-compose 文件创建 mysql docker 容器。服务已成功创建,但是当我尝试进入容器时,出现以下错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost'(使用密码:NO)

docker container exec -it 966 /bin/bash
root@96607883960b:/# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root@96607883960b:/# 



version: '3.3'

services:
   db:
    image: mysql:5.7.29
    container_name: mysql
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    environment:
      - MYSQL_USER="testpass"
      - MYSQL_PASSWORD="testpass"
      - MYSQL_ROOT_PASSWORD="testpass"
    ports:
      - 33060:3306
    volumes:
      - /Users/hello/Work/Volumes/wavolumes/mysql:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

我发现很多文章都没有帮助解决这个问题

有没有人解决这个问题?

Mih*_*hai 6

您的连接确实有效,您可以验证它运行以下内容(服务应该已经在运行!):

docker-compose exec db sh -c 'mysql -uroot -p${MYSQL_ROOT_PASSWORD}'
Run Code Online (Sandbox Code Playgroud)

问题是您使用了错误的密码。

您可以通过运行很容易地看到您的问题docker-compose config。您将在输出中看到双引号作为值的一部分包含在内。

此版本应该可以解决您的问题:

version: '3.3'

services:
   db:
    image: mysql:5.7.29
    container_name: mysql
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    environment:
      - MYSQL_USER=testpass
      - MYSQL_PASSWORD=testpass
      - MYSQL_ROOT_PASSWORD=testpass
    ports:
      - 33060:3306
    volumes:
      - /Users/hello/Work/Volumes/wavolumes/mysql:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)