怪异的MySQL Python mod#u wsgi Can';t连接到';本地主机';(49)问题
关于StackOverflow也有类似的问题,但我没有发现完全相同的情况。这是在使用MySQL的OSXLeopard机器上实现的 一些起始信息:怪异的MySQL Python mod#u wsgi Can';t连接到';本地主机';(49)问题,python,mysql,django,mod-wsgi,mysql-error-2003,Python,Mysql,Django,Mod Wsgi,Mysql Error 2003,关于StackOverflow也有类似的问题,但我没有发现完全相同的情况。这是在使用MySQL的OSXLeopard机器上实现的 一些起始信息: MySQL Server version 5.1.30 Apache/2.2.13 (Unix) Python 2.5.1 mod_wsgi 3 mysqladmin还将跳过网络列为关闭 我能够从python命令行连接到mysql。但是,当我试图通过mod_wsgi使用复制和粘贴的代码或者通过Django来实现时,我收到了通用连接拒绝
MySQL Server version 5.1.30
Apache/2.2.13 (Unix)
Python 2.5.1
mod_wsgi 3
mysqladmin还将跳过网络列为关闭
我能够从python命令行连接到mysql。但是,当我试图通过mod_wsgi使用复制和粘贴的代码或者通过Django来实现时,我收到了通用连接拒绝
OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)")
我已经阅读了mysql手册,并尝试了其故障排除技巧,如
telnet localhost 3306
而我也确实得到了联系
我也不是试图以root身份连接
还有什么我可以查的吗?
提前谢谢 这方面没有太多问题。只是一个随机猜测,但请尝试使用: 数据库\主机='localhost' 而不是127.0.0.1 和/或尝试在my.ini中发表评论: 绑定地址127.0.0.1
值得一试。telnet连接工作起来有点奇怪。也许还有一些解决问题的方法:
shell> perror 49
OS error code 49: Can't assign requested address
我会先检查localhost接口,检查它是否有IPv4地址。也许有些牵强,但我在启用IPv6时遇到了一些麻烦
shell> ifconfig lo0
可能名称解析在Apache/mod_wsgi/etc中无法正常工作
import python
print socket.gethostbyname('localhost')
print socket.gethostbyaddr('127.0.0.1')
也许为了让您继续(我为Django做了一些贡献)尝试Django中的UNIX套接字,它可以将数据库主机设置为路径(从正斜杠开始):
或者你的套接字文件在哪里
最后,检查MySQL错误日志是否有任何奇怪的消息,比如无法绑定IP地址或端口
希望这能有所帮助。我遇到了这个错误,这是由于SELinux拒绝/usr/bin/httpd没有连接端口3306的权限。我通过以下方式更正了该问题:
setsebool httpd_can_network_connect_db on
似乎工作得很好,应该比禁用SELinux更安全。正如Avinash Meetoo在下面指出的,您可以使用:
setsebool -P httpd_can_network_connect_db
使selinux更改在重新启动期间保持不变。我在Django中收到了完全相同的错误消息:
OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)")
为了修复它,我必须在django设置文件中将mysql端口显式设置为3306。非常感谢。我在CentOS Linux 6上使用MySQL,SELinux以强制模式运行。setsebool完美地解决了这个问题。
setsebool-P httpd_can_network_connect_db on
甚至更好,因为它是持久的。如果没有-P
,则setsebool不会在重新启动期间保持不变。
OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)")