Docker Compose-创建并连接到mysql容器
在docker中很难掌握mysql。我已经使用docker compose运行了容器,但我无法通过任何工具(如phpmyadmin、workbench或tableplus)连接到数据库 我已直接连接到正在运行的容器并运行Docker Compose-创建并连接到mysql容器,mysql,docker,docker-compose,containers,Mysql,Docker,Docker Compose,Containers,在docker中很难掌握mysql。我已经使用docker compose运行了容器,但我无法通过任何工具(如phpmyadmin、workbench或tableplus)连接到数据库 我已直接连接到正在运行的容器并运行 mysql -uroot -p 并输入了我已传递的根密码,但此操作失败,出现以下错误: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 这是我的docke
mysql -uroot -p
并输入了我已传递的根密码,但此操作失败,出现以下错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这是我的docker-compose.yml文件:
version: '3'
services:
db:
image: mysql
restart: always
environment:
MYSQL_DATABASE: quotes
MYSQL_USER: quotes
MYSQL_PASSWORD: P@KhzKZp)56sU8n+
MYSQL_ROOT_PASSWORD: +\VrLG*<t5sq[\\shR29u#n~A3^Jp*
ports:
- '3306:3306'
volumes:
- /private/mdbdata/quotes:/etc/mysql/conf.d
expose:
- '3306'
版本:“3”
服务:
db:
图片:mysql
重新启动:始终
环境:
MYSQL\u数据库:引号
MYSQL\u用户:引号
MYSQL\u密码:P@KhzKZp)56sU8n+
MYSQL\u ROOT\u密码:+\VrLG*我认为您的容器正在“localhost”上寻找一个MYSQL服务器,它将无法工作容器的localhost是容器本身,而不是运行它的主机
您应该能够使用主机IP地址访问MySQL服务器。您尝试过提供的解决方案吗?基本上,如果您以前运行过一个容器,那么您必须显式地清除它,因为docker从以前实例化的容器中跟踪根密码(通过卷)。很多工具都会出现这种情况,这不是MySQL容器所独有的。一个简单的docker-compose rm-v
就足够了,然后打开你的容器。这基本上是从磁盘中删除旧卷,从以前的容器实例化中删除所有数据
您还可以调用docker ps
,找到您的容器并执行docker rm-v
。之后把你的容器拿出来。终于解决了这个问题。。。我必须从密码字符串中删除所有特殊字符
我尝试在字符串周围添加单引号和双引号,以查看是否允许使用特殊字符,但仍然失败。密码必须是字母数字。他指定它在外部也不起作用。你是对的。我误解了这个问题,以为他是想把一个容器连接到主机上运行的MySql服务器上。也许可以尝试在您的环境部分添加:“-'MYSQL\u ROOT\u HOST=%”?是的,我在访问过一个类似的站点后尝试过。感谢您的建议。如果您使用的密码高达…R29u
,在#
之前停止,是否有效?如果您将MYSQL\u ROOT\u PASSWORD
值放在单引号中,是否有效?谢谢您的建议David,但这不起作用