Как подключиться к серверу MySQL на другом хосте? - PullRequest
7 голосов
/ 20 августа 2011

Django может просто подключиться к своему собственному серверу MySQL, установив HOST и PORT в settings.py как '' (пустая строка):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'dbname',                   # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'root',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

У меня вопрос, как сделать так, чтобы он мог подключаться к другой базе данных на другом хосте? Предположим, что мой компьютер 192.168.1.33, а другой подключаемый компьютер - 192.168.1.34, оба находятся в одной сети. Я пытался установить это как:

'HOST': '192.168.1.34',
'PORT': '3306',

и

'HOST': '192.168.1.34',
'PORT': '',

но оба вызвали это OperationalError:

(2003, "Can't connect to MySQL server on '192.168.1.34'(10061)")

РЕШЕНИЕ: credit @ cdhowie

  1. Конфигурация привязки адреса к нужному хосту в /etc/mysql/my.cnf

  2. Создайте нового пользователя для хоста, которому вы хотите предоставить доступ (если у вас его нет).

  3. Проверка привилегий для этого пользователя (если доступ запрещен).

1 Ответ

22 голосов
/ 22 августа 2011

По умолчанию дистрибутивы на основе Debian настраивают MySQL для привязки только к localhost, что означает, что другие хосты не могут подключиться к нему.Исправьте конфигурацию MySQL, и она будет работать.

Редактируйте /etc/mysql/my.cnf и измените эту строку:

bind-address = 127.0.0.1

На это:

bind-address = 0.0.0.0

Это выставит MySQL навсе сетевые интерфейсы, поэтому убедитесь, что у вас есть меры безопасности, если этот сервер подвергается ненадежным хостам.

...