(It's probably a dumb question due to my limited knowledge with Docker or mysql administration, but since I spent a whole evening on this issue, I dare to ask it.)

In a nutshell

我想在docker容器中运行mysql,并从主机连接到它.到目前为止,我取得的最好成绩是:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

More details

我使用的是以下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)

Even more details

  • 我看到有一个问题是哪个looks like mine.然而,这是不一样的(而且它也没有任何答案)

服务器主机名(绑定地址):"0.0.0.0";港口:3306

推荐答案

如果您使用"127.0.0.1"而不是localhost,mysql将使用tcp方法,您应该能够将容器连接到:

mysql -h 127.0.0.1 -P 3306 -u root

Mysql相关问答推荐

查找表中的唯一记录

mysql 代码给我的外键格式不正确

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

SQL 查询仅当成员共享确切值时才 Select 成员对

Travis 构建失败并出现错误 LOAD DATA LOCAL INFILE 文件请求因访问限制而被拒绝

我在连接到 mysql 的 node js 中收到错误消息发送到客户端后无法设置标头

在 SQL 中 for each 组返回具有最大值的行,包括具有相同值的行

使用 JOIN 计算列中的所有值

从 SQL 中的左连接和内连接中减go 计数

使用 MySQL 在树中查找 Leaf

无法在两个 mysql 表上执行内部联接

如何在不违反唯一约束的情况下交换 MySQL 中两行的值?

如何在 MySQL 中删除具有 2 列作为复合主键的多行?

如何在mysql select查询中获取两个日期之间的日期列表

MySQL嵌套 Select 查询?

你如何 OR 两个 LIKE 语句?

MySQL解释计划中 Select 优化的表的含义

如何在 python 中逐行获取 MySQL ResultSet

使用 MySql,我可以对列进行排序但最后有 0 吗?

MySQL:切换 int 字段值的简单方法