2016-11-23 27 views
1

私はMacBookPro(El Capitan OS X)にインストールされているDjangoバージョン(1.10)を持っています。遠隔地のサーバにあるMySQLデータベースにAPIを接続したいUbuntu - 私の仕事ネットワークと同じネットワーク)。DjangoがMySQLサーバに接続できません

私は、Djangoのサーバを実行しているとき、私はこのエラーを取得:

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

は、これは私のプロジェクトから私のsettings.pyファイルです:私のMac上で

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

私はmysqlclient/mysql connector/python

をインストール

私はラップトップに1つのプロジェクトしかないので、仮想環境では動作しません。したがって、Pythonを分離する必要はありません。

私はおそらく許可の問題だと思っていますが、実際にはどのように設定するのか分かりません。私はチュートリアルをいくつか見つけましたが、毎回問題が発生します。

アイデアはありますか?

ありがとう;)

+0

が見えます。データベースサーバーを管理する人の支援を求める。 – AKX

+0

プロジェクトが1つだけの場合でも、virtual envを使用することは常に良いことです。この問題については、mysqlデータベースがリモート接続を受け入れることを確認してください。 – ettanany

+0

あなたのオフィスが外部IPからのmysqlポートへの着信接続を許可していないのは驚くことではありません – e4c5

答えて

2

まず、あなたはmy.cnfファイルを編集し、(あなたはまた、単にあなたのマシンのIPアドレスで127.0.0.1を変更することがあります)、次のようbind-addressで始まる行をコメントして、リモート接続を許可する必要がありますサービス:ユーザーへ

​​

権限を付与、次のように:

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から権限コマンドを実行すると正常ですか?クエリOK、0 rows affected(0.00 sec) '? – Deadpool

+0

私はコマンドの出力を覚えていませんが、それらのコマンドを実行した後であなたのアプリケーションからの接続を確認することができます – ettanany

2

MySQLはlocalhostでのみリッスンするように設定されているようです。

これは、クライアントマシンからtelnet 172.30.10.59 3306を実行することでテストできます。 、ネットワークのホストからの接続をリッスンするようにMySQLを設定するための/etc/mysql/my.cnfファイル

編集サーバのIPアドレスにバインドアドレスディレクティブを変更します。

hereを説明する構成手順を実行してみてください。 。たとえば、172.30.10.59を適切なアドレスに置き換えます。そのようなエントリがない場合は、コメントを外すか、改行を作成します。

bind-address = 172.30.10.59 

は、このコマンドでmysqldを再起動します。

sudo service mysql restart 

その後のtelnetまたは、もう一度アプリケーションを実行してテストします。 netstatにはmysqldの2番目のエントリもあります。

#bind-address     = 127.0.0.1 

が続いてMySQLを再起動します。

関連する問題