我想尝试使用python连接MySQL数据库。
连接到 localhost 工作正常,但我无法通过 IP 地址连接到 MySQL 数据库。
这是我的代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
db = MySQLdb.connect(host="My Computer IP",
user="root", passwd="606", db="testdb",port=3306)
cursor = db.cursor()
cursor.execute("SELECT * FROM table1")
results = cursor.fetchall()
for record in results:
col1 = record[0]
col2 = record[1]
print "%s, %s" % (col1, col2)
db.close()
错误是这样的:
OperationalError: (2003, "Can't connect to MySQL server on 'My Computer IP' (111)")
我发现有人在stackoverflow上也问过类似的问题 --> Can't connect to MySQL server error 111
这个方法我已经试过了,还是不行。
我原来的文档“my.cnf”中没有skip-networking这一行。
所以基本上,mysql不应该只监听127.0.0.1。 理论上mysql可以监听任何IP,我的电脑也设置了允许3306端口。
有人有什么建议吗?
最佳答案
这个答案对我有用:Trying to connect to remote MySQL host (error 2003)
我遇到了同样的错误,当我使用localhost
连接数据库时,连接正常。但是从另一台电脑或数据库服务器本身使用 ip 114.***.***.***
都失败了。我可以从另一台电脑 ping 这个 IP。
我的错误是由中间路由器引起的,当我想通过ip(不是localhost
或127.0.0.1
)访问数据库时,连接请求被发送到路由器,然后转发到数据库服务器。并且路由器没有相关的转发规则。
所以我通过路由器的配置页面添加了一条规则,然后成功连接了数据库。
关于python - 如何使用python通过ip地址连接mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48126859/