【问题标题】:Docker can't connect to local MySQL server through socketDocker 无法通过套接字连接到本地 MySQL 服务器
【发布时间】:2020-11-14 19:55:20
【问题描述】:

我是 docker 新手,遇到一个奇怪的错误。

当我跑步时

docker run --name some-mysql-5 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:latest

紧随其后

docker exec -ti containerid bash 
mysql -uroot -psecret

mysql 工作正常,我可以创建和填充数据库。

但是当我尝试创建持久主机卷以创建这样的共享数据库时:

docker run --name some-mysql-4 -v C:\Users\User\Desktop\shared_vol_test:/var/lib/mysql/data -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:latest

紧随其后

docker exec -ti containerid bash 
mysql -uroot -psecret

我收到以下错误

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

我也尝试以管理员身份运行它,但结果相同。

我做错了什么?

我是否以正确的方式创建共享持久卷?

【问题讨论】:

    标签: mysql docker docker-volume mysql-error-2002


    【解决方案1】:

    /var/run/mysqld 不是容器之间的共享文件系统。使用 tcp 端口 3306 连接容器或共享/var/run/mysqld

    【讨论】:

      【解决方案2】:

      我找到了一种解决方法,方法是在此文件夹 var/lib/mysql 而不是 var/lib/mysql/data 中创建卷

      我已经按照 this guide 的第一步进行了操作,现在成功了。

      我现在说是因为当我第一次尝试执行 mysql -uuser -ppass 时没有通过拒绝我访问来解决问题,过了一段时间它使用相同的凭据和相同的命令工作,所以我可以创建一个数据库。 db 现在出现在我的主机目标目录中,所以也许我找到了解决问题的方法。 Here提到了一些关于mysql time to be ready的事情,我猜还有很多我必须理解的行为。

      我的帐户名说明了一切:( :)

      【讨论】:

        猜你喜欢
        • 2019-07-03
        • 2017-10-07
        • 2018-08-07
        • 2020-02-29
        • 1970-01-01
        • 2011-01-12
        • 2017-01-21
        • 2013-03-04
        相关资源
        最近更新 更多