我正在使用下面的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
我发现许多文章无助于解决此问题
有人可以解决此问题吗?
答案 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 ...
除了接受的答案中建议的步骤外,您是否想澄清一下是否还做了其他工作才能使它起作用?