(由于我对 Docker 或 mysql 管理的知识有限,这可能是一个愚蠢的问题,但由于我在这个问题上花了整整一个晚上,我才敢问它。)
简而言之
我想在 docker 容器中运行 mysql 并从我的主机连接到它。到目前为止,我取得的最好成绩是:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
更多细节
我正在使用以下内容Dockerfile:
Dockerfile
FROM ubuntu:14.04.3 RUN apt-get update && apt-get install -y mysql-server # Ensure we won't bind to localhost only RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \ && mv temp.txt /etc/mysql/my.cnf # It doesn't seem needed since I'll use -p, but it can't hurt EXPOSE 3306 CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
在此文件所在的目录中,我可以成功构建映像并使用以下命令运行它:
> docker build -t my-image . > docker run -d -p 12345:3306 my-image
当我附加到图像时,它似乎工作得很好:
# from the host > docker exec -it <my_image_name> bash #inside of the container now $ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. [...]
但是,我并没有从主持人那里取得那么大的成功:
> mysql -P 12345 -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
grep -v
bind-address
/var/log/mysql/error.log
服务器主机名(绑定地址):‘0.0.0.0’;端口:3306 - “0.0.0.0”解析为“0.0.0.0”;在 IP 上创建的服务器套接字:‘0.0.0.0’。
如果您使用“127.0.0.1”而不是 localhost mysql 将使用 tcp 方法,您应该能够连接容器:
mysql -h 127.0.0.1 -P 3306 -u root