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