首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenShift中的mysql连接问题

问OpenShift中的mysql连接问题
EN

Stack Overflow用户
提问于 2014-03-04 11:08:33
回答 2查看 649关注 0票数 0

我之前使用本地开发服务器编写了我的应用程序,现在我已经将其移动到openshift小齿轮上,除了mysql连接之外,几乎所有的应用程序都可以运行。

在我的代码中,我有一行:

代码语言:javascript
复制
self.db = MySQLdb.connect(host, username, password, dbname)

当我查看openshift错误日志时,报告了以下错误:

代码语言:javascript
复制
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")

我认为python正在尝试使用UNIX套接字而不是INET套接字进行连接,但我不确定如何更改此行为。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2014-03-04 13:43:44

不特定于MySQLdb:如果您使用localhost作为主机名,则使用UNIX C库的MySQL客户机将尝试使用UNIX套接字(或MySQL上的命名管道)进行连接。有两种方法可以解决这个问题,但您需要授予额外的权限才能使其同时适用于这两种情况:

使用IP地址127.0.0.1

使用IP地址127.0.0.1代替localhost主机名。这将使MySQL客户端使用TCP/IP进行连接。

使用选项文件

另一种方法是使用选项文件强制协议。例如,在您的~/.my.cnf (或您需要的任何文件)中,添加以下内容:

代码语言:javascript
复制
[python]
protocol=tcp

现在使用连接参数读取选项文件和组:

代码语言:javascript
复制
import MySQLdb
cnx = MySQLdb.connect(host='localhost', user='scott', passwd='tiger',
                      read_default_file='~/.my.cnf',
                      read_default_group='python')

组名不需要是python,但最好不要使用mysql或client,因为它可能会干扰其他MySQL工具(当然,除非您希望这样做)。

要设置权限,您需要使用localhost的IP地址,如下所示:

代码语言:javascript
复制
mysql> GRANT SELECT TO yourdb.* TO 'scott'@'127.0.0.1' IDENTIFIED BY ...;

(站点注释:诸如TCP/Python之类的MySQL数据库驱动程序并不认为localhost是特殊的,它们立即通过MySQL /IP连接,并且您必须显式地使用unix_socket。)

票数 0
EN

Stack Overflow用户

发布于 2014-03-06 14:42:48

我后来发现,虽然数据库服务器在localhost上运行,但它在一个非常特定的localhost绑定地址上运行。在我的例子中,如果我没有注意到phpmyadmin是如何连接的,我永远不会尝试这个地址。

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

https://stackoverflow.com/questions/22162070

复制
相关文章

相似问题

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