2016-08-30 4 views
0

MySQLデータベースがあるところでdjangoアプリケーションを開発しています。 私のdjangoアプリケーションとデータベースの設定は、1台のマシン上にあります。LAMP(Python)スタックでリモートMySQL接続を開く方法

今私はメインマシンにあるMySQLデータベースにリモートで接続する必要があるスクリプトを実行している2台のマシンがあります。

私のメインマシンでです。私はこれを行っている:

sudo nano /etc/mysql/my.cnf 

が続いてその後

bind-address   = [my public ip address] 

bind-address   = 127.0.0.1 

を変更し、私は実行して、私のファイアウォール を通じて私のデータベースポートへのリモートアクセスを開く:

sudo ufw allow 3306/tcp 
sudo service ufw restart 

はその後、私は私のMySQLを実行し、次のコマンドを実行しました:

ユーザー名::私が使用してリモートデスクトップアプリケーションからの私のデータベースに接続しようとすると、今

CREATE USER [email protected][main machine ip address] IDENTIFIED BY 'my password'; 

GRANT ALL PRIVILEGES ON * . * TO [email protected][main machine ip address]; 

FLUSH PRIVILEGES; 

をNEWUSERの@を[私のパブリックIPアドレス]

パスワード:my_passwordという

ポート:3306

データベース:私のデータベース名

ホスト:[私のパブリックIPアドレス]

「アクセスが拒否されました」というエラーが表示されます。それを機能させるために必要なことは他にありますか?何か案が?

mysql -u newuser -p -h [my main server ip address]

そして

mysql -u [email protected][my main server ip address] -p -h [my main server ip address] 

をそれが与える:

私が使用してメインサーバに私の他のサーバからのコマンドラインを介して接続しようとしています。UPDATE

このエラー:ホスト '[私のローカルIPアドレス]'はこのMySQLサーバに接続することができません

答えて

1

リモート接続を許可する設定はうまくいくようです(ただし、mysqlの再起動については言及していませんが、完了したと仮定します)。また、私はNATが存在しないと仮定しており、関係するすべてのマシンはインターネットに直接接続されています(ifconfigはWAN ipを表示します)。

mysqlコマンドラインクライアントに接続することをお勧めします。これにより、より明確なエラーメッセージが表示される場合があります。 「アクセスが拒否されました」とは一般に、間違ったパスワードを意味します。 I username @ hostnameが見つからない場合、別のエラーメッセージが表示される

+0

だから私はこのサーバーを通して私の他のサーバーからコマンドラインを介して接続しようとしました。それは私にこのエラーを与える:ホスト '[私のローカルIPアドレス]'は、このMySQLサーバーに接続することはできません – Elisha512

1

マシンIPアドレスを使用する代わりに、任意のホスト 'user' @ '%'を許可し、動作するかどうかを確認してください。

もしそうなった場合は、ログを確認して、あなたのホスト名があなたのサーバーに表示されているものを確認してください。

バインドアドレスを変更する必要はありません。

関連する問題