Устранение ошибки «django.db.utils.OperationalError: (2003, «Невозможно подключиться к серверу MySQL на локальном хосте» ([Errno 111] Соединение отклонено)»)»

При работе с Django и MySQL вы можете столкнуться с ошибкой «django.db.utils.OperationalError: (2003, «Невозможно подключиться к серверу MySQL на локальном хосте» ([Errno 111] Соединение отклонено)»). Это ошибка обычно возникает, когда Django не может установить соединение с сервером MySQL. В этой статье мы рассмотрим несколько способов устранения и решения этой проблемы.

Метод 1: проверка состояния сервера MySQL
Первый шаг — убедиться, что сервер MySQL работает. Откройте терминал или командную строку и введите следующую команду:

sudo service mysql status

Если сервер не запущен, запустите его командой:

sudo service mysql start

Метод 2: проверка конфигурации сервера MySQL
Проверьте файл конфигурации сервера MySQL, чтобы убедиться, что он настроен правильно. Файл конфигурации обычно находится по адресу /etc/mysql/my.cnfили /etc/mysql/mysql.conf.d/mysqld.cnf. Откройте файл в текстовом редакторе и проверьте следующие настройки:

  1. bind-address. Убедитесь, что для адреса привязки установлено значение 127.0.0.1или localhost.

  2. port. Убедитесь, что номер порта соответствует номеру, указанному в настройках Django.

Метод 3: проверьте учетные данные пользователя MySQL
Убедитесь, что имя пользователя и пароль, указанные в настройках Django, соответствуют учетным данным пользователя MySQL. Откройте файл настроек вашего проекта Django (settings.py) и найдите словарь DATABASES. Убедитесь, что значения USERи PASSWORDверны.

Метод 4: предоставление привилегий пользователю MySQL
Иногда пользователь MySQL, указанный в настройках Django, не имеет достаточных привилегий для подключения к базе данных. Вы можете предоставить необходимые привилегии, войдя на сервер MySQL как пользователь root и выполнив следующие команды:

GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;

Замените your_database_nameна имя вашей базы данных и your_usernameна имя пользователя MySQL, указанное в настройках Django.

Метод 5: проверьте настройки брандмауэра и безопасности
Брандмауэры или настройки безопасности вашего сервера могут блокировать соединение с сервером MySQL. Убедитесь, что необходимые порты (обычно 3306) открыты и доступны. Возможно, вам придется обратиться к документации вашего сервера или к системному администратору за помощью в настройке брандмауэра.

Метод 6: проверка соединения вне Django
Чтобы изолировать проблему, попробуйте подключиться к серверу MySQL с помощью клиентского инструмента MySQL вне Django. Например, вы можете использовать клиент командной строки mysqlили графический инструмент, например MySQL Workbench. Если вам удалось подключиться успешно, возможно, проблема связана с вашим проектом Django.

Ошибка «django.db.utils.OperationalError: (2003, «Невозможно подключиться к серверу MySQL на локальном хосте» ([Errno 111] Соединение отклонено)»)» может расстраивать, но если следовать методам устранения неполадок, описанным в В этой статье вы можете выявить и решить проблему. Не забудьте дважды проверить состояние, конфигурацию, учетные данные и привилегии вашего сервера MySQL. Кроме того, убедитесь, что какие-либо настройки брандмауэра или безопасности не блокируют соединение. сможете установить успешное соединение между Django и MySQL.