2009-07-22 19 views
1

のpython mysqlの接続の問題

import MySQLdb 

db = MySQLdb.connect("localhost", "root", "","bullsorbit") 
cursor = db.cursor() 

cursor.execute("Select * from table where conditions'") 
numrows = int(cursor.rowcount) 

print 'Total number of Pages : %d ' % numrows 

が、私は私のIPアドレス

db = MySQLdb.connect("192.168.*.*", "root", "","bullsorbit") 

を与える場合には、このエラーにあなたが経由での接続はlocalhostと

super(Connection, self).__init__(*args, **kwargs2) 
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'ip address' (111)") 
+0

ローカルではない接続でrootがログインできるようにサーバーが構成されていますか? –

答えて

3

を与えますループバックインターフェイス。

ip-addrを使用して接続します - あなたはexternから接続します。

サーバがローカル(ループバック)接続のみを許可する場合 あなたのip-addr接続は失敗します。 (セキュリティー!)

あなたのmysql設定を見て、たぶんローカル接続だけが許されます。

は、(mysql-conf内の)スキップネットワークスイッチがオフになっていますか?

#skip-networking 
0

の代わりに:

db = MySQLdb.connect("192.168..", "root", "","bullsorbit")

試してみてください。

db = MySQLdb.connect(user="root", host="192.168..", db="bullsorbit")

パスワードが空の文字列をデフォルトとし、通常のアイデンティティの方法を試します。ホストはデフォルトポートのlocalhostもデフォルトにします。

+0

お返事ありがとうございます。私は両方とも試してみます。同じエラーメッセージが表示されます。 –

5

コード2003はstandard MySQL client error次のとおりです。

Error: 2003 (CR_CONN_HOST_ERROR) Message: Can't connect to MySQL server on '%s' (%d)

私は、ユーザーがIPアドレスを使用してMySQLサーバへの接続を許可されていないことを推測すると思います。 MySQLのコマンドラインクライアントを使用して接続しようとするとどうなりますか? 2003エラーのために

$ mysql --host=192.168.1.1 -u root bullsorbit

+0

エラー:2003年(HY000):MySQLサーバに接続できません。 '192.168.5.23'(111) –

+0

問題はPythonとは関係ありません。ローカルマシンのIPアドレスから接続する権限をユーザーに与える必要があります。 –

+0

ありがとうございました..... –

0

、別の可能性があまりにも多くの接続が時間の短すぎるで試みられているということです。私は接続文字列として127.0.0.1を持っていたときにこの同じ振る舞いに気付きました。最初に私はそれをlocalhostに置き換えましたが、それでも私はさらに同じですが、同じ2003エラーです。それから私はコールの数を減らしても、エラーは完全に消えてしまった。