MySQL Docker容器-错误1045(28000):访问被拒绝,用户'root'@'localhost'(使用密码: NO)

7
我正在使用下面的docker-compose文件创建MySQL Docker容器。服务已成功创建,但是当我尝试进入容器时,出现以下错误: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: 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

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

有人有这个问题的解决方案吗?


删除卷,可能会缓存一些旧密码,然后尝试使用以下内容:volumes: - /Users/hello/Work/Volumes/wavolumes/mysql:/var/lib/mysql 如果这样不起作用,请尝试去掉它,如果还是不行,则尝试添加 command: --default-authentication-plugin=mysql_native_password - Adiii
仍然存在同样的问题。我已经移除了旧卷。 - Madhu
1个回答

11

您的连接实际上是有效的,您可以运行以下命令进行验证(服务应该已经在运行中):

docker-compose exec db sh -c 'mysql -uroot -p${MYSQL_ROOT_PASSWORD}'

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

您可以通过运行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

感谢@Mihai提供这个简单的答案,实际上我花了将近4个小时来弄清楚为什么我的一些容器无法连接到DB容器,原来是在DB密码中犯了一个简单的错误。 - Jose Mhlanga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接