InterfaceError: 2003: Невозможно подключиться к серверу MySQL на «localhost: 3306» (13 Отказано в доступе) - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь разместить приложение на сервере apache2, используя python CGI framework. Программа отлично работает при компиляции и ошибок нет. Когда я пытаюсь сделать это в веб-браузере, я получаю сообщение об ошибке.

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)

Это ошибка, с которой я сталкиваюсь. Всем, кто знаком с этой проблемой, пожалуйста, дайте мне знать.

Спасибо.

1 Ответ

1 голос
/ 22 июня 2019

Что нужно проверить, если предположить, что это машина с Linux:

  • Убедитесь, что вы можете подключиться локально, используя то же имя пользователя и пароль. mysql -u [youruser] -p

  • Если SELinux работает, убедитесь, что логическое значение «httpd_can_network_connect_db» включено. Проверьте с sudo getsebool httpd_can_network_connect_db. Если он возвращается как «выключен», установите его в «on» с помощью sudo setsebool -P httpd_can_network_connect_db on. (Обязательно включите -P, иначе он вернется к исходному значению при перезапуске системы.)

...