gpt4 book ai didi

php - 连接到同一 pod 中的 MySQL 容器

转载 作者:可可西里 更新时间:2023-11-01 07:05:06 24 4
gpt4 key购买 nike

你好,

我正在使用 Kubernetes 在谷歌容器引擎上运行容器。

想法是在一个 pod 中运行两个容器。一个容器使用 docker mysql 镜像,另一个运行 php、laravel、nginx 和 composer。

在本地,这有效。这个想法是 php 可以连接到本地主机上的数据库,如果两个容器都在同一个 pod 中,这应该可以工作。但是,当 pod 启动时,我们会在日志中看到以下消息:

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

唯一不同的是,在本地测试时,我将 localhost 更改为内部 docker ip。

谢谢,美好的一天

最佳答案

在 Unix 上,MySQL 程序对主机名 localhost 进行特殊处理,与其他基于网络的程序相比,其处理方式可能与您所期望的不同。对于到本地主机的连接,MySQL 程序尝试使用 Unix 套接字文件连接到本地服务器。即使给出 --port-P 选项来指定端口号,也会发生这种情况。要确保客户端与本地服务器建立 TCP/IP 连接,请使用 --host-h 指定主机名值 127.0.0.1 ,或本地服务器的 IP 地址或名称。您还可以使用 --protocol=TCP 选项显式指定连接协议(protocol),即使对于本地主机也是如此。例如:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

--protocol 选项使您能够建立特定类型的连接,即使其他选项通常默认为某些其他协议(protocol)也是如此。

另一个解决方案是使用 Kubernetes Volume在容器之间共享路径的抽象。在两个容器的图像上编辑 /etc/mysql/my.cnf 并更改 MySQL 服务器和客户端的 socket 位置以指向共享目录或磁盘。

关于php - 连接到同一 pod 中的 MySQL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com