繁体   English   中英

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

[英]mysql-docker-container - ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

我正在使用以下 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

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

有人能解决这个问题吗?

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

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

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

您可以通过运行docker-compose config轻松查看您的问题。 您将在 output 中看到双引号包含在值中。

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

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

偶然发现了同样的错误并尝试了接受的解决方案,以及仅使用 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}'来连接它docker exec -it docker_db_1 bash -c 'mysql --protocol=tcp -u usr -p${MYSQL_PASSWORD}'和其他变体。 总是得到ERROR 1045 (28000): Access denid for user...

除了接受的答案中建议的步骤之外,您是否介意澄清一下您是否做了其他事情来使其工作?

暂无
暂无

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

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