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

时间:2020-06-28 02:07:06

标签: mysql docker docker-compose

我正在使用下面的docker-compose文件创建mysql docker容器。服务创建成功,但是当我尝试进入容器内时出现以下错误 错误1045(28000):用户'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

我发现许多文章无助于解决此问题

有人可以解决此问题吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

偶然发现相同的错误,并尝试了接受的解决方案,以及仅使用Dockerfile,尝试使用“ MYSQL_ALLOW_EMPTY_PASSWORD”,“ MYSQL_RANDOM_ROOT_PASSWORD”和其他mysql图像标签(5.6、5.7和最新版本)。根本的信誉也不起作用。我显然做错了。

我的撰写如下:

version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_USER: usr
      MYSQL_PASSWORD: pass
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "3306:3306"
    volumes:
      - d:/vm/docker-volumes/mysql:/var/lib/mysql

我通过docker-compose -f "docker-compose.yml" up -d --build命令构建它,然后尝试通过进行docker exec -it docker_db_1 bash -c 'mysql --protocol=tcp -u usr -p${MYSQL_PASSWORD}'和其他变体来连接到它。始终获得ERROR 1045 (28000): Access denid for user ...

除了接受的答案中建议的步骤外,您是否想澄清一下是否还做了其他工作才能使它起作用?