首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到同一个吊舱中的MySQL容器

问连接到同一个吊舱中的MySQL容器
EN

Stack Overflow用户
提问于 2016-02-03 15:10:23
回答 2查看 3.4K关注 0票数 6

日安,

我使用Kubernetes在google容器引擎上运行容器。

这个想法是在一个吊舱里运行两个容器。一个容器使用docker映像,另一个容器运行php、laravel、nginx和composer。

在当地,这是可行的。其思想是,php可以连接到localhost上的数据库,如果两个容器位于同一个容器中,则应该可以这样做。但是,当吊舱启动时,我们在日志中看到以下消息:

代码语言:javascript
复制
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

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

谢谢你,祝你愉快

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-06 04:15:27

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

代码语言:javascript
复制
shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

--protocol选项使您能够建立特定类型的连接,即使其他选项通常默认为其他协议。

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

票数 5
EN

Stack Overflow用户

发布于 2016-02-04 09:38:02

MySQL预先配置为只支持本地主机上的命名管道连接,如果要从另一台逻辑机器连接到它,则需要在my.cnf文件中找到以下行.

代码语言:javascript
复制
#bind-address = 127.0.0.1

代之以..。

代码语言:javascript
复制
bind-address = {your network ip here}

启用绑定地址后,请重新启动mysql服务器,检查错误日志以确保绑定地址不会出现异常,然后以根用户身份登录并创建附加到该ip地址的新用户帐户,然后可以使用该帐户从任何其他逻辑机器访问MySQL,只要您使用在my.cnf中定义的IP地址连接到它。

请注意,默认情况下,根帐户只能从本地主机访问,因此您需要创建新的用户帐户或更改根帐户以支持远程连接(不安全)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35180683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档