docker容器内的mysql说“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器”
Posted
技术标签:
【中文标题】docker容器内的mysql说“无法通过套接字\'/var/run/mysqld/mysqld.sock\'连接到本地MySQL服务器”【英文标题】:mysql inside a docker container says "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' "docker容器内的mysql说“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器” 【发布时间】:2020-02-10 04:03:56 【问题描述】: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)
生成文件
最后,.. 这是我用来运行所有 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 ERROR 2002 (HY000): 无法连接 本地 MySQL 服务器通过 socket '/var/run/mysqld/mysqld.sock' (2)
【问题讨论】:
【参考方案1】:原因是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 进程使用官方入口点脚本运行时才有可能。
【讨论】:
以上是关于docker容器内的mysql说“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器”的主要内容,如果未能解决你的问题,请参考以下文章
在 Docker 中安装 MySQL 失败并显示错误消息“无法通过套接字连接到本地 MySQL 服务器”
你好,我想请教下docker里的centos容器怎么改变udp缓冲区,谢谢,目前好像改不了说的文件readonly?