首页 > 解决方案 > InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (13 Permission denied)

问题描述

我正在尝试使用 python CGI 框架在 apache2 服务器上托管应用程序。程序编译后运行良好,没有错误。当我在网络浏览器上尝试时,我得到了错误。

InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (13 Permission denied)

我已尝试安装 mysql-connector-python 并检查是否缺少任何内容。一切似乎都很好。下面是详细的错误代码。

def connectdb():
    mydb = mx.connect(host='localhost',user='******',passwd='********',database='searchdb')
    cur=mydb.cursor()
    return mydb,cur

尝试访问程序时出错。

Traceback (most recent call last):
File "/var/www/html/ftest.py", line 116, in <module>
  mydb,cur=connectdb()
File "/var/www/html/ftest.py", line 55, in connectdb
mx.connect(host='localhost',user='*****',passwd='********',database='searchdb')
File "/usr/lib/python2.7/site-packages/mysql/connector/__init__.py", line 98, in connect
  return MySQLConnection(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 118, in __init__
  self.connect(**kwargs)
File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 382, in connect
  self._open_connection()
File "/usr/lib/python2.7/site-packages/mysql/connector/connection.py", line 345, in _open_connection
  self._socket_open_connection()
File "/usr/lib/python2.7/site-packages/mysql/connector/network.py", line 386, in _open_connection
  errno=2003, values=(self.get_address(), _strioerror(err)))
InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (13 Permission denied)

这是我面临的错误。有知道这个问题的朋友,请告诉我。

谢谢你。

标签: pythonhtmlmysqlapachecgi

解决方案


有些事情要检查,假设这是一台 Linux 机器:

  • 确保您可以使用相同的用户名和密码进行本地连接。 mysql -u [youruser] -p

  • 如果 SELinux 正在运行,请确保“httpd_can_network_connect_db”布尔值设置为打开。检查与sudo getsebool httpd_can_network_connect_db。如果它返回为“关闭”,则使用 将其设置为“开启” sudo setsebool -P httpd_can_network_connect_db on。(确保包含 -P,否则如果系统重新启动,它将恢复为原始值。)


推荐阅读