如何将django开发者服务器连接到MySQL数据库?

nic*_*las 2 python mysql sql database django

在开始之前,请尊重我是一个新手,问我需要什么更多的信息来解决这个问题而不是关闭问题.;) 好.我正在尝试将我的Django开发人员服务器连接到托管在远程服务器上的MySQL数据库.我安装了MySQL和MySQL-Python并在'settings.py'中设置了这些设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'database_name',                      # Or path to database file if using sqlite3.
        'USER': 'database_user',                      # Not used with sqlite3.
        'PASSWORD': 'database_password',                  # Not used with sqlite3.
        'HOST': 'db9.subsys.no',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试启动开发人员服务器时,python manage.py runserver我得到这个:

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 91, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Python/2.7/site-packages/django/core/management/validation.py", line 103, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/validation.py", line 14, in validate_field
    db_version = self.connection.get_server_version()
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 411, in get_server_version
    self.cursor()
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 306, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 387, in _cursor
    self.connection = Database.connect(**kwargs)
  File "build/bdist.macosx-10.7-intel/egg/MySQLdb/__init__.py", line 81, in Connect
  File "build/bdist.macosx-10.7-intel/egg/MySQLdb/connections.py", line 187, in __init__
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'db9.subsys.no' (60)")
Run Code Online (Sandbox Code Playgroud)

当我换'HOST': 'db9.subsys.no'到时,'HOST': ''我得到了这个:

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 91, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Python/2.7/site-packages/django/core/management/validation.py", line 103, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/validation.py", line 14, in validate_field
    db_version = self.connection.get_server_version()
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 411, in get_server_version
    self.cursor()
  File "/Library/Python/2.7/site-packages/django/db/backends/__init__.py", line 306, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 387, in _cursor
    self.connection = Database.connect(**kwargs)
  File "build/bdist.macosx-10.7-intel/egg/MySQLdb/__init__.py", line 81, in Connect
  File "build/bdist.macosx-10.7-intel/egg/MySQLdb/connections.py", line 187, in __init__
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'database_user'@'localhost' (using password: YES)")
Run Code Online (Sandbox Code Playgroud)

是否无法使用开发人员服务器连接到MySQL,或者我是否需要对数据库进行某种配置?如果您有答案或需要更多信息,请回复.

非常感谢提前!

Bur*_*lid 6

如果要连接到远程MySQL服务器,应该确定三件事:

  1. 服务器正在使用网络而不是套接字(没有skip-networking线路my.cnf),服务器正在监听公共IP(带bind-address).

  2. 您的防火墙允许远程访问MySQL端口,3306默认情况下.

  3. 允许用户远程访问:

    GRANT ALL ON someDatabase.* to someUser@some.remote.ip IDENTIFIED BY 'foopass';