1
我试图在python2.7中使用pymysql
和sshtunnel
来隧道连接,这样我就可以连接到只能通过堡垒服务器访问的mysql实例。堡垒服务器的主机名为BASTIONIP
,该服务器可以连接到MYSQLHOST
,没有任何问题。但是,python似乎无法通过隧道连接。下面是我的代码:正确使用SSHTunnel
with sshtunnel.SSHTunnelForwarder(
(BASTIONIP, 22),
ssh_username='dataengineer',
ssh_pkey="/Users/USERNAME/.ssh/id_rsa",
remote_bind_address=(MYSQLHOST, 3306),
local_bind_address=(MYSQLHOST, 3306)
) as tunnel:
self.DB = {'con': pymysql.connect(host=MYSQLHOST,
user=USERNAME,
passwd=PASSWORD,
db=DBNAME,
port=tunnel.local_bind_port,
charset='utf8',
autocommit=True)}
self.DB['cursor'] = self.DB['con'].cursor(pymysql.cursors.DictCursor)
然而,当我尝试连接,我得到以下错误:
File "/Library/Python/2.7/site-packages/sshtunnel.py", line 1378, in _get_local_interfaces
local_if = socket.gethostbyname_ex(socket.gethostname())[-1]
gaierror: [Errno 8] nodename nor servname provided, or not known
任何人都可以指出我在做什么错?
'local_bind_address'就在你的合作mputer不在mysql服务器上,尝试将它设置为localhost:'local_bind_address =('localhost',3306)'或'local_bind_address =('127.0.0.1',3306)' – Dalvenjia
我在尝试更改时遇到同样的错误'local_bind_address'设为'localhost','127.0.0.1'或'0.0.0.0'。请注意,这是在运行于'0.0.0.0:8080'的django应用程序中运行的 – user2694306