我正在尝试连接到别人的“机器”上的MySQL数据库。当我使用Navicat for MySQL时,我没有问题连接到它。我试图用Python做同样的事情,所以我不必使用GUI界面。我知道下面的所有信息都是正确的(即使我交换了假信息) - 有人能发现我哪里出错吗?我得到的错误是OperationalError: (2005, "Unknown MySQL server host 'FTP_hostname' (0)")
我的代码(使用SSH的paramiko):
import MySQLdb
import paramiko
import time
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('SSH_hostname', 22, username='me', password='pswrd')
time.sleep(1)
db = MySQLdb.connect(host="FTP_hostname",
user="root",
passwd="pswrd2",
db="MyDB")
cur = db.cursor()
再一次,我将所有这些都放入Navicat并且没有问题。希望你能帮忙!谢谢!
答案 0 :(得分:2)
MySQL与大多数数据库一样,默认情况下在本地运行,不允许从外部网络访问。因此,您无法从外部计算机连接到它。
Navicat是一个明确用于远程数据库管理的软件,可能通过SSH连接并通过它连接MySQL连接。这样它就可以像在本地安装数据库一样,对于数据库来说,它看起来好像是在本地访问的。
您可以尝试通过使用Paramiko创建隧道来做同样的事情;另见this question。
答案 1 :(得分:0)
如果您仍然需要通过SSH连接到远程MySQL数据库,我使用了一个名为sshtunnel的库,它包装和简化了paramiko(sshtunnel的依赖)的使用。
您可以使用一些示例代码检查另一个类似问题中的my answer以使用它。
答案 2 :(得分:-1)
db = MySQLdb.connect(host =“FTP_hostname”,
主机不需要是127.0.0.1(localhost),因为隧道正在使MySQL数据库本地运行到运行python脚本的机器上吗?