mysql - 连接到在docker中运行的mysql

标签 mysql docker

创建 Docker 网络后,我在 Docker 容器中运行了 mysql。

docker network create --subnet=172.19.0.0/16 网络名称

docker run -p 3306:3306 --net 网络名称 --ip 172.19.0.13 -e MYSQL_ROOT_PASSWORD=密码 -d

然后当我尝试使用命令连接到本地的 mysql 时 mysql -uroot -p,我收到错误(错误 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2 ))

然后我成功使用命令mysql -u root -p -h 172.19.0.13

我以为我将本地主机端口 3306 与 docker 容器的 3306 端口连接起来。 为什么无法通过localhost端口连接mysql?

最佳答案

您可以使用 tcp 套接字或 unix 套接字连接到 mysql。 当你在远程时,你总是使用 tcp socket 。 当你是本地mysql客户端时更喜欢socket。

在你的情况下,你需要知道 mysql 是 unix 套接字。 你可以使用:

 netstat -npl

当 mysql 在 Docker 容器中运行时,您必须在容器内才能连接到本地主机。

如果您是本地人:

  • mysql -u root -p -h 127.0.0.1 将强制使用 tcp 套接字
  • mysql -u root -p -h localhost 将使用 unix 套接字

关于mysql - 连接到在docker中运行的mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029022/

相关文章:

docker - 如何在 Docker for Windows 中实际绑定(bind)挂载文件

Docker:来自守护进程的错误响应:删除 myvol:卷正在使用中

r - 如何使用 golem 在 Flexdashboard 包装器中制作 dockerized Shiny 应用程序?

docker - 运行多个 docker compose

php - MySQL 查询按月返回行数

javascript - Mysql 数据库的 Ajax 请求

php - 更新我的数据库在 php 中不起作用

php - 如何从输入在mysql中输入时间戳

php - 如何根据opencart购物车页面上的产品类别计算折扣?

mongodb - Docker-compose和mongoDB:无法在任何兼容版本下启动WiredTiger?