问题:
建立与运行在其中的 MySQL 实例的连接主机系统中的 Docker 容器被证明不成功,导致错误2002.
Dockerfile 详细信息:
使用的 Dockerfile 包括以下配置:
FROM ubuntu:14.04.3 RUN apt-get update && apt-get install -y mysql-server RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt && mv temp.txt /etc/mysql/my.cnf EXPOSE 3306 CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
虽然映像初始化没有问题,但会尝试连接从主机使用命令 mysql -P 12345 -uroot 产生上述结果错误。
解决方案:
连接规范:
要连接到 Docker 容器内的 MySQL 实例,如下调用 mysql 命令时需要提供正确的参数host:
mysql -h localhost -P 3306 --protocol=tcp -u root
这里,-h localhost 指定主机,-P 3306 指定端口(在本例中为 12345),--protocol=tcp 表示应通过 TCP/ 建立连接IP 而不是套接字连接。
Socket限制:
在 Docker 容器内,MySQL 绑定到所有网络接口,不包括 localhost。由于主机系统无法访问套接字,因此必须使用 TCP/IP 进行通信。通过在mysql命令中指定--protocol=tcp,通过端口3306建立连接成功。
以上是如何从我的主机连接到 Docker MySQL 容器?的详细内容。更多信息请关注PHP中文网其他相关文章!