无法通过 python 连接 phpMyAdmin 中的 MySQL 数据库

Can`t connect MySQL database in phpMyAdmin by python

我需要使用 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")

public 网段的人可以连接 phpMyAdmin 但我不能。

我无法更改我的网段,所以我无法确认这是真正的原因。

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

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

正如我在评论中所写,我怀疑它是 运行 端口 80,这是 url 到您的 phpMyAdmin 而不是核心 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

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