我正在尝试使用MySQL码头工人镜像建立一个简单的容器。我可以运行容器并使用以下命令提示符对其进行设置
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD="myrootpassoword" -d mysql
但是当我尝试使用docker-compose进行操作时,容器启动了,但是我无法使用mysql -p
连接到mysql db。我的密码不起作用,它使访问被拒绝,并且我无法使用该容器。以下是我的撰写文件。我想念什么吗?
# Docker Compose file Reference (https://docs.docker.com/compose/compose-file/)
version: '3'
# Define services
services:
# Mysql Service
db:
image: "mysql" # Use a public mysql image to build the mysql service
volumes:
- dbvol:/var/lib/mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "myrootpassowrd"
MYSQL_DATABASE: "mydb"
MYSQL_USER: "myadmin"
MYSQL_PASSWORD: "mypassword"
ports:
- "3306:3306" # Forward the exposed port 3306 on the container to port 3306 on the host machine
container_name: test-mysql
volumes:
dbvol:
答案 0 :(得分:0)
结合docker-compose文件,您应该能够通过以下方式连接到mysql实例
mysql -h localhost -u myadmin -pmypassword
请注意缺少密码的空格!
答案 1 :(得分:0)
最后,我找到了引起此问题的问题。我的密码包含$符号,该符号用于在docker中获取变量,因此下一个字符/部分被视为变量,并且未设置值,因此将其视为空白而未引发任何错误。
为了逃避它,我不得不使用两个美元符号$$
所以我从
MYSQL_ROOT_PASSWORD: "myroot$passowrd"
到
MYSQL_ROOT_PASSWORD: "myroot$$passowrd"
它正常工作。