2017-01-19 15 views
1

Pythonを介してリモートからmySQLデータベースに接続する際に問題があります。Pythonを使用したmySQLへのリモートアクセス

私は、MySQLに接続するために、次の使用

import mysql.connector 
cnx = mysql.connector.connect(host='XXX.XXX.XXX.X',user='XXXX',password='XXXXXX',database='testdb') 

しかし、私は次のエラーを取得:サーバーは

2003: Can't connect to MySQL server on '%HOST%:3306' (10060 A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) 

実行していると私は実行するコンピュータ上で同じコードを実行されると'localhost' 輸入mysql.connector CNXを使用してから、サーバ=

mysql.connector.connect(host='localhost',user='XXXX',password='XXXXXX',database='testdb') 

それは動作し、私はデータベース内のデータを変更することができます。私はそれを別のコンピュータから遠隔で接続しようとしています。

私はGRANT ALL ON *.* TO [email protected] IDENTIFIED BY 'password';を試しましたが、結果はありませんでした。私はファイアウォールをチェックし、デフォルトで使用されるポート3306を介してすべての着信および発信接続を許可しました。

私はmySQLを初めて使い、実際に何をすべきかわかりません。私は正しいホスト名を使用するかどうかわかりません: ')私はサーバを稼働させているコンピュータのIPアドレスを使用していると思います。

私は迷っています。どんな助けでも大歓迎です!

答えて

0

ユーザーにすべての権限を与える必要はありません。このユーザーが遠隔地からログインできるようにMYSQLに指示する必要があります。実際に

あなたは今、このユーザー・アカウントを介してリモートアクセスを許可しているとして、あなたはそれが必要それが唯一のデータベース(複数可)にアクセスできることを確認する必要があり、間違い例えばGRANT

を使用することはできません
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass'; 

このユーザーは任意のIPアドレスから接続できるようになります。より多くのあなたがすでに [email protected]

いずれかの方法を持っているので、あなたはここに新しいユーザーアカウントを作成している、

CREATE USER 'myuser'@'11.22.33.44' IDENTIFIED BY 'mypass'; 

を忘れないでくださいことができれば、あなたが具体的かつ個々のIPアドレスを指定してみてください確保するために、あなたはパスワードが強いものであることを確認する必要があります。特に%任意のipオプションを使用しています

+0

これは私の問題を解決しません。データベースに接続できない別のユーザーが作成されます。私はまだ同じエラーが発生します – EerlijkeDame

+0

ファイアウォールがあなたをブロックしていないことを確認してください – RiggsFolly

+0

私のファイアウォールがすべてのIPのためのポート3306の着信および発信接続を許可するように作成しました。 – EerlijkeDame

関連する問題