SSH-туннель для соединения с Python MySQLdb

Я попытался создать туннель SSH, используя

ssh -L 3306:localhost:22 <hostip> 

Затем запустите мой скрипт python для подключения через localhost

 conn = MySQLdb.connect(host'localhost', port=3306, user='bob', passwd='na', db='test') 

Однако, я получаю следующую ошибку

 (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)") 

Как я могу убедиться, что я нахожусь на правильном хосте, а не только на проблему с привязкой?

  • Выполнить удаленный скрипт python через SSH
  • Python - Paramiko - несовместимый ssh-сервер
  • Видя escape-символы при нажатии клавиш со стрелками в оболочке python
  • Как сделать multihop ssh с тканью
  • Использование os.forkpty () для создания псевдотерминала для ssh на удаленный сервер и для связи с ним
  • Как открыть папку удаленного сервера с помощью python?
  • NumbaPro на устройстве Cuda через соединение ssh
  • Загружайте файлы с помощью SFTP в Python, но создавайте каталоги, если путь не существует
  • 3 Solutions collect form web for “SSH-туннель для соединения с Python MySQLdb”

    Попробуйте изменить "localhost" на "127.0.0.1" , он должен работать так, как вы ожидаете. Это поведение подробно описано в руководстве :

    Сокеты UNIX и именованные каналы не работают по сети, поэтому, если вы укажете хост, отличный от localhost, будет использоваться TCP, и вы можете указать нечетный порт, если вам нужно (порт по умолчанию – 3306):

    db=_mysql.connect(host="outhouse", port=3307, passwd="moonpie", db="thangs")

    Если вам действительно нужно, вы можете подключиться к локальному хосту с TCP, указав полное имя хоста или 127.0.0.1 .

    Разве mysqld работает на порту 22 на пульте дистанционного управления? Назовите меня невежественным, но я думаю, что вы пытаетесь сделать это

     ssh -n -N -f -L 3306:localhost:3306 remotehost 

    Затем создание соединений MySQL на локальной машине будет прозрачно проходить туннелирование на целевой хост.

    Вы не можете указать localhost как имя хоста, так как это говорит о том, что MySQLdb должен попытаться использовать сокет UNIX. Вместо этого используйте 127.0.0.1 для хоста.

    Если вы хотите убедиться, что соединение работает, вы можете использовать стандартный клиент mysql.

    Python - лучший язык программирования в мире.