2016-11-23 3 views
1

У меня есть версия Django (1.10), которая установлена ​​на моем MacBookPro (El Capitan OS X), и я хотел бы подключить API к моей базе данных MySQL, которая расположена на удаленном сервере (Ubuntu - та же сеть, что и моя рабочая сеть).Django не может подключиться к серверу MySQL

Я получаю эту ошибку, когда я бегу сервер Django:

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '172.30.10.58' (61)") 

Это мой settings.py файл из моего проекта:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'Etat_Civil', 
     'USER': 'root', 
     'PASSWORD': 'password', 
     'HOST': '172.30.10.58', 
     'PORT': '3306', 
    } 
} 

На моем Mac я установил mysqlclient/mysql connector/python

Я не работаю с виртуальной средой, потому что у меня только один проект на моем ноутбуке. Поэтому нет необходимости изолировать Python.

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

У вас есть идеи?

Большое спасибо;)

+0

Похоже удаленный компьютер не принимает соединения от вашего ноутбука. Обратитесь за помощью к тем, кто управляет сервером базы данных. – AKX

+0

Даже если у вас есть только один проект, всегда полезно использовать виртуальный env. В этом случае убедитесь, что ваша база данных mysql принимает удаленные подключения. – ettanany

+0

Неудивительно, что ваш офис не разрешает входящие соединения на порту mysql с внешнего IP-адреса – e4c5

ответ

2

Во-первых, вам нужно разрешить удаленные соединения путем редактирования my.cnf файла и комментируя строку, которая начинается с bind-address следующим образом (Вы также можете просто изменить 127.0.0.1 вашей машины IP-адрес):

#bind-address     = 127.0.0.1 

Затем перезапустить MySQL сервис:

sudo service mysql restart 

предоставления привилегий вашего пользователя следующим образом:

mysql> CREATE USER 'root'@'172.30.10.%' IDENTIFIED BY 'password'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.30.10.%' 

Чтобы предоставить привилегии только на Etat_Civil, вы можете попробовать:

mysql> GRANT ALL PRIVILEGES ON Etat_Civil.* TO 'root'@'172.30.10.%' 
+0

Это нормально, когда я выполняю команду привилегий из MySQL: 'Query OK, 0 rows affected (0.00 sec)'? – Deadpool

+0

Я не помню выход команды, но вы можете проверить соединение с вашим приложением после запуска этих команд – ettanany

2

Похоже MySQL настроен на прослушивание только на локальном хосте.

Вы можете проверить это, запустив telnet 172.30.10.59 3306 с вашего клиентского компьютера.

Пожалуйста, попробуйте следовать шаг конфигурации описано here:

Отредактируйте файл /etc/mysql/my.cnf настроить MySQL для прослушивания соединений с узлами сети, измените директиву привязывать-адрес в IP-адрес сервера , Например, замените 172.30.10.59 соответствующим адресом. Если такой записи нет - раскомментируйте ее или создайте новую строку.

bind-address = 172.30.10.59 

Затем перезапустите туздЫ с этой командой:

sudo service mysql restart 

Затем проверьте с телнет или запустить приложение еще раз. Также netstat будет иметь вторую запись для mysqld.

Смежные вопросы