我正在尝试为开发数据库创建mysql容器。
我的应用程序是golang做的。
现在,我创建docker-compose.yml来运行app&db。
mysql容器已经创建,我可以启动它,但是当我试图通过db客户端(sequel pro)连接到这个db时,会显示拒绝访问。
这是我的docker-compose.yml
version: '3'
services: app:
build:
context: .
dockerfile: "Dockerfile"
ports:
- "8080:8080"
volumes: mysql:
image: mysql:5.7.10
environment:
MYSQL_ROOT_PASSWORD: 'pass'
ports:
- '3306:3306'
volumes:
- mysql-data:/var/lib/mysql volumes: mysql-data:
driver: local
是的
$ docker-compose build
和
$ docker-compose up -d
然后创建容器,mysql如下,如果exec命令
$docker ps-a码
1f7540fdedc1 mysql:5.7.10 "/entrypoint.sh mysq…" 1 second ago Up 2 seconds 0.0.0.0:3306->3306/tcp XXX_mysql_1
在那之后,如果我尝试连接这个db和sequel pro,我可以在kitematic中看到这个消息。
Access denied for user 'root'@'172.18.0.1' (using password: YES)
ip、用户名、密码、端口必须正确。
另外,如果我使用kitematic为mysql创建docker容器,我可以连接到该容器。
我不知道为什么拒绝访问会出现。
显示拒绝访问时的屏幕截图
1条答案
按热度按时间daupos2t1#
我已经解决了类似的问题。确保您拥有最新的mysql版本的映像。
docker pull mysql:5.7.10
.然后删除关联的卷(如果存在数据,则进行备份)。如果您使用的是docker compose yml版本3,您应该将您的环境Map为
MYSQL_ROOT_PASSWORD=password
. 通过转到容器并运行命令来验证设置是否正确echo $MYSQL_ROOT_PASSWORD
.如果您是从主机登录,请尝试传递协议标志。
mysql -u root -p --protocol=tcp
(也可以传递主机localhost或127.0.0.1)-h 127.0.0.1