无法通过python

时间:2015-06-25 07:09:13

标签: python mysql phpmyadmin

我需要使用python在phpMyAdmin中连接数据库。

import MySQLdb
db = MySQLdb.connect(host="10.0.0.140",port=80,user="root",passwd="password")
cursor=db.cursor()
cursor.execute("SHOW DATABASES")
results=cursor.fetchall()
for result in results:
print row

我收到此错误

2013,"Lost connection to MySQL server at'waiting for initial communication packet',system error:0"

我可以用chrome访问数据库,所以我认为这不是远程访问的问题。

=======================更新=======================

真正的原因是我在一个有限的网段。(也许)

我的代码中的SQL连接有问题。

如果更改了这样的代码:(不需要端口)

MySQLdb.connect(host="10.0.0.140",user="root",passwd="password")

公共网段中的人可以连接phpMyAdmin,但我不能。

我不能改变我的网段,所以我不能确认这是真正的原因。

但这是我和其他人之间的唯一区别。

2 个答案:

答案 0 :(得分:1)

检查连接,你确定在80端口运行mysql吗?

正如我在评论中所写,我怀疑它运行端口80,这是你的phpMyAdmin的url而不是核心的mysql数据库服务器。通常,Web和数据库在不同的计算机,不同的IP地址等上运行。这是托管环境吗?或者你在本地机器上运行它。

如果是您的本地计算机,则应该更改为端口3306。

如果它是托管合作伙伴的托管环境,那么您需要检查它们的JDBC URL。正如您所写,它是XXXX托管合作伙伴。然后检查你的XXX,它将为你的mysql提供一个XXX jdbc url,并确保授予用户访问权限,以便你可以远程登录到工作站的mysql。 mysql url / host可能是这样的NNNN-aaaa-bbbb-cccc-dddd.xxx.domain.xx

您也尝试了PyMYSQL

import pymysql
db = pymysql.connect(host='10.0.0.140',user='root',passwd='password')
cursor = db.cursor()
query = ("SHOW DATABASES")
cursor.execute(query)
for r in cursor:
print r

答案 1 :(得分:0)

这不是你应该这样做的方式。 phpMyAdmin为用户提供HTML,应该在Web浏览器中使用。您应该直接连接到通常在端口上侦听的MySQL主机:3306。此外,您应该记住,在生产中,MySQL服务器通常不会监听公共接口。