在docker中尝试使用mysql时遇到困难。我已经使用docker-compose运行了该容器,但是我无法通过phpmyadmin,workbench或tableplus等任何工具连接到数据库。
我已直接连接到正在运行的容器并运行
mysql -uroot -p
并输入我已经通过的root密码,但这失败,并显示以下错误:
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'
已经有好几天了...希望有人能帮忙!
答案 0 :(得分:0)
我认为您的容器正在'localhost'上寻找MySQL服务器,该服务器将无法工作。容器的“本地主机”是容器本身,而不是运行容器的主机。
您应该能够使用主机IP地址访问MySQL服务器。
答案 1 :(得分:0)
您是否尝试过here提供的解决方案?基本上,如果您有一个先前运行的容器,则必须明确清除它,因为Docker会跟踪先前实例化的容器中的root passwds(通过 volumes )。许多工具都会发生这种情况,这不是MySQL容器所独有的。一个简单的docker-compose rm -v
就足够了,然后启动您的容器。这基本上是从磁盘上删除旧卷,从先前的容器实例中删除所有数据。
您还可以调用docker ps
,找到您的容器并执行docker rm -v <CONTAINER_NAME>
。之后拿起你的容器。
答案 2 :(得分:0)
最终解决了这个问题……我不得不从密码字符串中删除所有特殊字符。
我讨厌在字符串周围添加单引号和双引号,以查看是否允许使用特殊字符,但这仍然失败。密码必须为字母数字。