docker容器中的mysql表示“无法通过套接字'/var/run/mysqld/mysqld.sock连接到本地MySQL服务器”

时间:2019-10-13 07:14:14

标签: mysql docker

Dockerfile

我正在尝试使用Docker。这是我的dockerfile:

FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD 123
ENV MYSQL_DATABASE users
ENV MYSQL_USER admin
ENV MYSQL_PASSWORD 1234
ADD setup.sql /docker-entrypoint-initdb.d
EXPOSE 3306
CMD tail -f /dev/null

从容器访问Mysql

以下是我从容器访问mysql的尝试。

  

root @ 76757566f93a:/#mysql -uroot -p123 mysql:[警告]使用   命令行界面上的密码可能不安全。错误2002   (HY000):无法通过套接字连接到本地MySQL服务器   '/var/run/mysqld/mysqld.sock'(2)

Makefile

最后,..这是我用来运行所有docker命令的Makefile:

container = db
image-name = senso

run:
    docker run --name $(container) -d $(image-name)

bash:
    docker exec -it $(container) /bin/bash

build:
    docker build -t $(image-name) .

mysql -v

我还尝试运行mysql -v来检查容器中的mysql是否正常,我认为不是。

  

root @ 76757566f93a:/#mysql -v错误2002(HY000):无法连接到   通过套接字'/var/run/mysqld/mysqld.sock'(2)创建本地MySQL服务器

1 个答案:

答案 0 :(得分:2)

原因是mysql进程未运行,因为您在Dockerfile中覆盖了CMD,作为基础CMD开始Mysql进程。

CMD tail -f /dev/null

从Dockerfile中删除CMD

您不需要替换,因为基本映像会处理它,但是如果要替换,请使用以下内容

ENTRYPOINT ["/entrypoint.sh"]
CMD ["mysqld"]

ADD setup.sql /docker-entrypoint-initdb.d仅在使用正式入口点脚本运行MySQL进程时才可能。