2017-02-01 6 views
2

私は自分のlocalhost上でDjango Projectに取り組んでおり、私は離れてMySQL Databaseを使いたいと思います。遠隔MySQLデータベースにDjangoプロジェクトを接続します

私のローカルホストのIPは次のとおりです。172.30.10.XX

私のMySQL遠いサーバがある:私のDjangoのsettings.pyファイルで172.30.10.XX

、私が書きました:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'DatasystemsEC', 
     'USER': 'root', 
     'PASSWORD': '*****', 
     'HOST': '172.30.10.XX', 
     'PORT': '3306', 
     'OPTIONS': { 
      'init_command': 'SET innodb_strict_mode=1', 
     }, 
    } 
} 

私のデータベース名は次のとおりです。

DatasystemsEC私は実行

しかし、:python manage.py migrate、私はこのエラーを取得:phpmyadminのでMySQLに

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 342, in execute 
    self.check() 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 374, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 61, in _run_checks 
    issues = run_checks(tags=[Tags.database]) 
    File "/usr/local/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/usr/local/lib/python2.7/site-packages/django/core/checks/database.py", line 10, in check_database_backends 
    issues.extend(conn.validation.check(**kwargs)) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/validation.py", line 9, in check 
    issues.extend(self._check_sql_mode(**kwargs)) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode 
    with self.connection.cursor() as cursor: 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 231, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 204, in _cursor 
    self.ensure_connection() 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 263, in get_new_connection 
    conn = Database.connect(**conn_params) 
    File "/Library/Python/2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line 193, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '172.30.10.XX' (61)") 

を、私は持っている:

enter image description here

を私は順番に新しいユーザを設定する必要がありますと仮定しますMacOSX localhostを登録するには?

私はosxという名前の新しいユーザーを作成しました。しかし、それはまだ動作しません。 (サーバーへのSSHとき)あなたは私だけではlocalhostから使用するように作成されたユーザーの

+0

(エラー)を作業しないように見える、私はあなたが質問からあなたの本当のIPアドレスとDB名を削除示唆しています。次のメソッドを使用して接続をテストしてみてください。http://stackoverflow.com/a/11790458/988082 – ozking

答えて

0

すべてを助けることができれば

ありがとうございました。

あなたのIPアドレスに

+0

また、MySQLインスタンスの設定を外部ネットワークからの接続を許可するように設定する必要があります(たとえば 'listen = 0.0.0.0')。安全に行われ、データベースにはすべてのユーザーに対して強力なパスワードが必要です。 – ojrask

+0

@iklinacはい、それは私がやったことですが、stilleは同じエラーです。私は 'bind-address'を修正しなければならないことを学びましたが、my.cnfファイルにはこの行がありません。 – Andro

1

に外部からアクセスすることができ、ユーザーを持っていますが、ユーザーの

ホスト名は、例えばに変更する必要があり、他の侵入者のために、できるだけ多くのアクセスを制限するように注意する必要があります私が見つかりました。解決策:私はこの行を追加私のmy.cnfファイルで

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
user=mysql 
bind-address=172.30.10.XX 

と私はを実行します

セキュリティ上の理由から

+1

あなたはmysqlポートを世界に開放したままにしておくことのセキュリティへの意識をよく承知していますか? – e4c5

+0

私のコンピュータを許可するために何をしなければならないのですか? – Andro

+0

ファイアウォールをセットアップし、VPCを作成したり、sshトンネルをセットアップしたりする必要があります – e4c5

関連する問題