我正在尝试为开发DB创建mySQL容器 我的应用程序是由golang制作的。
现在,我创建了docker-compose.yml来运行APP& DB。
mySQL容器已创建,我可以启动它,但是当我尝试通过数据库客户端(Sequel Pro)尝试连接此数据库时,会显示Access denied。
它是我的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
之后,如果我尝试将此数据库与续集专业版连接起来,我可以用kitematic看到此消息。
Access denied for user 'root'@'172.18.0.1' (using password: YES)
ip,用户名,密码,端口必须正确。
另外,如果我使用kitematic为mySQL创建docker容器,我可以连接容器。
我不知道访问被拒绝的原因。
答案 0 :(得分:0)
我已解决此类似问题。确保您具有mysql版本的最新映像。 docker pull mysql:5.7.10
。
然后删除关联的卷(如果有现有数据,请备份)。如果您使用的是docker-compose yml版本3,则应映射您的环境,例如MYSQL_ROOT_PASSWORD=password
。通过转到容器并运行命令echo $MYSQL_ROOT_PASSWORD
,验证其设置正确。
如果要从主机登录,请尝试传递协议标志。
mysql -u root -p --protocol=tcp
(您也可以通过主机localhost或127.0.0.1)-h 127.0.0.1