Ошибка подключения WinError 10061, так как конечный компьютер отклонил запрос на подключение

Обновлено: 21.11.2024

Клиент MySQL в Unix может подключаться к серверу mysqld двумя различными способами: с помощью файла сокета Unix для подключения через файл в файловой системе (по умолчанию /tmp/mysql.sock ) или с помощью TCP/IP. , который подключается через номер порта. Соединение с файлом сокета Unix быстрее, чем TCP/IP, но его можно использовать только при подключении к серверу на том же компьютере. Файл сокета Unix используется, если вы не укажете имя хоста или если вы укажете специальное имя хоста localhost .

Если сервер MySQL работает в Windows, вы можете подключиться с помощью TCP/IP. Если сервер запускается с включенной системной переменной named_pipe, вы также можете подключиться к именованным каналам, если запустите клиент на хосте, где работает сервер. Имя именованного канала по умолчанию — MySQL. Если вы не укажете имя хоста при подключении к mysqld, клиент MySQL сначала попытается подключиться к именованному каналу. Если это не работает, он подключается к порту TCP/IP. Вы можете принудительно использовать именованные каналы в Windows с помощью . как имя хоста.

Ошибка (2002) Не удается подключиться к . обычно означает, что в системе не работает сервер MySQL или что вы используете неправильное имя файла сокета Unix или номер порта TCP/IP при попытке подключения к серверу. Также следует убедиться, что используемый вами порт TCP/IP не заблокирован брандмауэром или службой блокировки портов.

Ошибка (2003) Не удается подключиться к серверу MySQL на ' server' (10061) означает, что в сетевом подключении отказано. Вы должны убедиться, что сервер MySQL работает, что на нем разрешены сетевые подключения и что указанный вами сетевой порт совпадает с портом, настроенным на сервере.

Начните с проверки того, запущен ли процесс с именем mysqld на хосте вашего сервера. (Используйте ps xa | grep mysqld в Unix или Диспетчер задач в Windows.) Если такого процесса нет, вам следует запустить сервер. См. Раздел 2.10.2, «Запуск сервера».

Если запущен процесс mysqld, вы можете проверить его, выполнив следующие команды. Номер порта или имя файла сокета Unix могут отличаться в вашей настройке. host_ip представляет собой IP-адрес машины, на которой работает сервер.

Обратите внимание на использование обратных кавычек вместо прямых кавычек в команде hostname; это приводит к тому, что вывод hostname (то есть текущее имя хоста) подставляется в команду mysqladmin. Если у вас нет команды hostname или вы работаете в Windows, вы можете вручную ввести имя хоста вашего компьютера (без обратных кавычек), следуя параметру -h. Вы также можете попробовать -h 127.0.0.1 для подключения по TCP/IP к локальному хосту.

Убедитесь, что сервер не настроен на игнорирование сетевых подключений или (если вы пытаетесь подключиться удаленно) не настроен на прослушивание только локально на своих сетевых интерфейсах. Если сервер был запущен с включенной системной переменной skip_networking, он вообще не может принимать соединения TCP/IP. Если сервер был запущен с системной переменной bind_address, для которой задано значение 127.0.0.1 , он прослушивает соединения TCP/IP только локально на интерфейсе обратной связи и не принимает удаленные соединения.

Убедитесь, что брандмауэр не блокирует доступ к MySQL. Ваш брандмауэр может быть настроен на основе выполняемого приложения или номера порта, используемого MySQL для связи (по умолчанию 3306). В Linux или Unix проверьте настройки IP-таблиц (или аналогичных), чтобы убедиться, что порт не заблокирован. В Windows может потребоваться настроить такие приложения, как ZoneAlarm или брандмауэр Windows, чтобы они не блокировали порт MySQL.

Вот несколько причин, по которым может возникнуть ошибка «Не удается подключиться к локальному серверу MySQL»:

mysqld не запущен на локальном хосте. Проверьте список процессов вашей операционной системы, чтобы убедиться, что процесс mysqld присутствует.

Кто-то удалил файл сокета Unix, который использует mysqld (по умолчанию /tmp/mysql.sock). Например, у вас может быть задание cron, удаляющее старые файлы из каталога /tmp. Вы всегда можете запустить версию mysqladmin, чтобы проверить, действительно ли существует файл сокета Unix, который mysqladmin пытается использовать. Исправление в этом случае состоит в том, чтобы изменить задание cron, чтобы не удалять mysql.sock, или поместить файл сокета в другое место. См. Раздел B.3.3.6, «Как защитить или изменить файл сокета MySQL Unix».

Вы запустили сервер mysqld с параметром --socket=/path/to/socket, но забыли сообщить клиентским программам новое имя файла сокета. Если вы измените имя пути сокета для сервера, вы также должны уведомить клиентов MySQL. Вы можете сделать это, предоставив ту же опцию --socket при запуске клиентских программ. Вам также необходимо убедиться, что у клиентов есть разрешение на доступ к файлу mysql.sock. Чтобы узнать, где находится файл сокета, вы можете сделать следующее:

Вы используете Linux, и один поток сервера умер (сброшено ядро). В этом случае вы должны убить другие потоки mysqld (например, с помощью kill ), прежде чем вы сможете перезапустить сервер MySQL. См. Раздел B.3.3.3, «Что делать, если MySQL продолжает давать сбой».

Серверная или клиентская программа может не иметь надлежащих прав доступа к каталогу, содержащему файл сокета Unix, или к самому файлу сокета. В этом случае вы должны либо изменить привилегии доступа к каталогу или файлу сокета, чтобы сервер и клиенты могли получить к ним доступ, либо перезапустить mysqld с параметром --socket, указывающим имя файла сокета в каталоге, где сервер может создавать и где клиентские программы могут получить к нему доступ.

Если вы получаете сообщение об ошибке Не удается подключиться к серверу MySQL на some_host , вы можете попробовать следующее, чтобы выяснить, в чем проблема:

Проверьте, работает ли сервер на этом хосте, выполнив telnet some_host 3306 и несколько раз нажав клавишу Enter. (3306 — это номер порта MySQL по умолчанию. Измените значение, если ваш сервер прослушивает другой порт.) Если сервер MySQL работает и прослушивает порт, вы должны получить ответ, который включает номер версии сервера. Если вы получаете сообщение об ошибке, например, telnet: Невозможно подключиться к удаленному хосту: Отказ в подключении , значит, сервер на данном порту не работает.

Если сервер работает на локальном хосте, попробуйте использовать переменные mysqladmin -h localhost для подключения с помощью файла сокета Unix. Проверьте номер порта TCP/IP, который настроен для прослушивания сервером (это значение переменной порта).

Если вы работаете под управлением Linux и включен Linux с улучшенной безопасностью (SELinux), см. Раздел 6.7, «SELinux».

B.3.2.2.1 Сбой подключения к серверу MySQL в Windows

Если вы используете сервер MySQL в Windows с большим количеством подключений TCP/IP и довольно часто ваши клиенты получают сообщение об ошибке Не удается подключиться к серверу MySQL, причина может заключаться в том, что Windows не не допускать достаточного количества эфемерных (короткоживущих) портов для обслуживания этих соединений.

Целью TIME_WAIT является поддержание соединения, принимающего пакеты, даже после того, как соединение было закрыто. Это связано с тем, что маршрутизация в Интернете может привести к тому, что пакет будет идти по медленному маршруту к месту назначения, и он может прибыть после того, как обе стороны согласились закрыться. Если порт используется для нового соединения, этот пакет из старого соединения может нарушить протокол или скомпрометировать личную информацию из исходного соединения. Задержка TIME_WAIT предотвращает это, гарантируя, что порт нельзя будет использовать повторно до тех пор, пока не будет разрешено некоторое время для прибытия задержанных пакетов.

Можно значительно уменьшить TIME_WAIT для подключений по локальной сети, потому что маловероятно, что пакеты прибудут с очень большой задержкой, как это могло бы произойти через Интернет с его сравнительно большими расстояниями и задержками.

Windows разрешает пользователю эфемерные (краткосрочные) TCP-порты. После закрытия любого порта он остается в состоянии TIME_WAIT в течение 120 секунд. Порт снова недоступен, пока не истечет это время. Диапазон номеров портов по умолчанию зависит от версии Windows, с более ограниченным количеством портов в более старых версиях:

От Windows до Server 2003: порты в диапазоне 1025–5000

Windows Vista, Server 2008 и более поздние версии: порты в диапазоне 49152–65535

С небольшим стеком доступных портов TCP (5000) и большим количеством портов TCP, открытых и закрытых в течение короткого периода времени, а также статусом TIME_WAIT, у вас есть хорошие шансы исчерпать порты. Есть два способа решить эту проблему:

Быстро уменьшите количество потребляемых TCP-портов, изучив пул соединений или постоянные соединения, где это возможно

Настройте некоторые параметры в реестре Windows (см. ниже)

Запустите редактор реестра ( Regedt32.exe ).

Найдите следующий ключ в реестре:

В меню "Правка" нажмите "Добавить значение" и добавьте следующее значение реестра:

Это устанавливает количество эфемерных портов, доступных любому пользователю. Допустимый диапазон — от 5000 до 65 534 (десятичное число). Значение по умолчанию: 0x1388 (десятичное число 5000).

В меню "Правка" нажмите "Добавить значение" и добавьте следующее значение реестра:

Это задает время в секундах, в течение которого подключение TCP-порта удерживается в состоянии TIME_WAIT перед закрытием. Допустимый диапазон — от 30 до 300 после запятой, хотя вы можете уточнить у Microsoft последние разрешенные значения. Значение по умолчанию: 0x78 (десятичное число 120).

Выйти из редактора реестра.

Перезагрузите компьютер.

Примечание. Для отмены вышеуказанного достаточно просто удалить созданные вами записи реестра.

client.connect() Файл "C:\Python34\lib\site-packages\ws4py\client\__init__.py", строка 209, в connect self.sock.connect(self.bind_addr) ConnectionRefusedError: [WinError 10061 ] Соединение установить не удалось, так как целевая машина отказала ему">

Текст был успешно обновлен, но возникли следующие ошибки:

Прокомментировал Lawouach 14 апреля 2014 г.

Мне интересно, не установлено ли это ограничение в настройках Windows. XP не очень удобна для серверов.

комментарий zaazbb от 14 апреля 2014 г.

Я изменил 2000 клиентов на 20 клиентов, ошибка все еще существует.

Прокомментировал Lawouach 14 апреля 2014 г.

Действительно. Я только что попробовал, и кажется, что Windows не очень любит использовать «localhost». Не могли бы вы изменить часть «localhost» на «127.0.0.1» (или ваш реальный IP-адрес) в приведенном выше примере менеджера, пожалуйста? Мне это помогло.

комментарий zaazbb от 14 апреля 2014 г.

нет, эта ошибка все еще существует, независимо от того, используете ли вы «127.0.0.1» или «192.168.1.100» (мой реальный IP-адрес).
но запустите другой пример, используйте тот же IP и порт, все в порядке.

Прокомментировал Lawouach 14 апреля 2014 г.

Это странно. Я только что попробовал (заметьте, на Windows 7), и все сработало отлично (хотя и не так быстро, поскольку в Windows мы вынуждены использовать select, что довольно дерьмово).

комментарий zaazbb от 14 апреля 2014 г.

комментарий zaazbb от 15 апреля 2014 г.

в 64-разрядной версии Win7 возникает та же ошибка (ConnectionRefusedError).

комментарий zaazbb от 15 апреля 2014 г.

Я выясняю причину этой ошибки.
Должен запускаться сервер перед клиентом. если сервер не запущен, клиент встретит ConnectionRefusedError.
Я сделал ошибку низкого уровня.
Закройте тему, пожалуйста.
спасибо.

pkgandhi прокомментировал 4 января 2017 г.

Здравствуйте, у меня похожая проблема. Должны ли мы что-либо вводить в пароль, если мы делаем это через аутентификацию Windows, войдя в систему через SQL Server Management Studio. Любая помощь будет оценена по достоинству. Спасибо!

ultravires прокомментировал 13 марта 2018 г. •

Здравствуйте, может ваша "цель" не поддерживает https, например: http://www.hacker97.cn/, но ваша "цель ="https://hacker97.cn/". Вы должны убедиться, что ваша цель верна

SagarDaya379 прокомментировал 10 июня 2018 г.

ConnectionRefusedError: [WinError 10061] Не удалось установить соединение, так как целевая машина отказала ему. Я получаю эту ошибку, помогите, пожалуйста

sp98 прокомментировал 12 июля 2018 г.

При установке MongoDB у вас есть варианты «полный» и «выборочный». Перейти с опцией «Пользовательский». Это решило эту проблему для меня. Хотя не уверен, почему.

ujur007 прокомментировал 19 августа 2018 г.

У меня такая же ошибка, но я уже запустил сервер перед клиентом.

Прокомментировал VIkash2601 24 августа 2018 г.

Прокомментировал Lawouach 24 августа 2018 г.

Привет всем, я давно не заглядывал в этот проект, поэтому еще раз приношу свои извинения, если он вас расстроил. Я действительно переместил один.

Однако, если когда-нибудь появится PR с исправлением для этого от сообщества, я буду рад выпустить его.

Рональд-Саунфе прокомментировал 11 января 2019 г.

Эта ошибка возникает, когда клиенту не удалось подключиться к серверу.

  • Убедитесь, что ваш сервер запущен, это означает, что;
    ->сервер привязался к адресу и порту и прослушивает входящее соединение

Чедешри прокомментировал 19 февраля 2019 г.

Я не знаю, почему эта проблема закрыта. У меня такая же ошибка, как и у большинства из вас, ребята, например, "ConnectionRefusedError: [WinError 10061] Не удалось установить соединение, поскольку целевая машина активно отклоняла его".
В любом случае, я пробовал все возможные решения, упомянутые в списке выше:

  1. Завершение приложения (IDE) — чтобы проверить, не удерживает ли какой-либо предыдущий поток ресурс.
  2. socket.close и отключение сокета, чтобы освободить сокет после использования
  3. запуск сервера перед клиентом
  4. изменение адреса с "localhost" на "127.0.0.1"
  5. изменение порта с 50000 на другие значения.

видимо, ничего из этого мне не помогло.

Lucky630 прокомментировал 26 февраля 2019 г. •

нашел решение, потратив 2 часа поиска
файл server.py
импорт сокета s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = '' port = 5555 s.bind ((хост, порт)) s.listen(5) while True: c, addr = s.accept() print('Соединение получено от', addr) c.send(b'Спасибо за соединение') c.close ()
файл client.py
импорт сокета s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'ip-адрес сервера..' port = 5555 try: s.bind((host , порт)) кроме socket.error как e: print(str(e)) s.connect((хост, порт)) print(s.recv(1024)) s.close()
Это сработало для меня . другое решение, такое как переход на «localhost» или «127.0.0.1», не сработало.
и вы должны запустить сервер перед клиентом.
сервер - это машина с окном, а клиент - это машина с ubuntu.

Большое спасибо за усилия по отправке решения, я обязательно попробую этот метод. С уважением, Шринат Чеде

Вт, 26 февраля 2019 г., 12:39, rednivrug ***@***.***> написал: нашел решение, потратив 2 часа на поиск файла server.py import socket s = socket.socket (сокет.AF_INET, сокет.SOCK_STREAM) host = '' port = 5555 s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() print('Соединение получено от', addr) c.send (b'Спасибо за подключение') c.close() файл client.py import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'ip-адрес сервера..' port = 5555 try: s. bind((хост, порт)) кроме socket.error как e: print(str(e)) s.connect((хост, порт)) print(s.recv(1024)) s.close() Это сработало для меня . — Вы получаете это, потому что вы прокомментировали. Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение .

Прокомментировал SalihOsman1 15 мая 2019 г.

Мне удалось решить эту проблему, установив (debug=False) на моем сервере Flask. Это работало для обоих (localhost и 127.0.0.1). Надеюсь, это сработает для некоторых людей!

прокомментировал rohitgautamm 14 августа 2019 г.

измените порт на 8080 или 8888, а хост на socket.gethostname()
надеюсь, это поможет, как помогло мне
если проблема все еще существует, поделитесь кодом

Прокомментировал Utkarsh22Ahuja 18 сентября 2019 г.

Убедитесь, что значение IP-адреса на сервере точно такое же, как и у вашего клиента. Так как клиент будет подключаться к серверу. К сожалению, сервер будет работать только на 127.0.0.1, который является вашей машиной, а все остальные не будут работать, пока вы не создадите свою собственную виртуальную машину. В системах Unix эта функция будет работать на 127.0.. , но в Windows только на 127.0.0.1.
Это проверено мной, и его документация доступна на странице номер 12 книги Foundation of Python Programming — Third edition, Brandon, John.

Chandlerrrr прокомментировал 9 февраля 2020 г.

Я получал ту же ошибку. Убедитесь, что вы работаете с портом 3306, если это не так, добавьте port="3307" или любой другой порт, над которым вы работаете, в строке mysql.connector.connect mydb = mysql. Connector.connect(хост = "127.0.0.1", порт = "3307", пользователь = "root", passwd="gautam4?")``

muhammedayman прокомментировал 13 февраля 2020 г.

если вы используете программное обеспечение, подобное wamp или xamp, запустите его перед выполнением команды
"python manage.py runserver"
это связано с настройками означает, что если вы используете соединение mysql в своей программе< /p>

ziyaetuk прокомментировал 17 февраля 2020 г.

Все, что я сделал, это запустил "mongod" и попытался подключиться. Сервер mongodb должен был запуститься.

BiswajitGhoshal прокомментировал 13 марта 2020 г.

Почему этот вопрос был закрыт? Я не мог найти, какое решение было предоставлено. !? Как и куда я должен был начать бежать, прежде чем позвонить?

njokuifeanyigerald прокомментировал 13 апреля 2020 г.

у меня такая же проблема всякий раз, когда я использую dj rest auth для django

Лавуа прокомментировал 1 мая 2020 г.

Я думаю, что на данном этапе большинство комментариев здесь связаны с распространенной ошибкой подключения, которая может возникнуть в любом программном обеспечении. Похоже, они не связаны с ws4py. Поэтому я закрою эту проблему.

Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.

Отвечает:

Вопрос

Я разместил сервисное приложение wcf, используя службы Windows. Когда мой клиент (ASP.NET) пытается вызвать класс службы, размещенный в службе Windows, я получаю эту ошибку «Код ошибки TCP 10061: не удалось установить соединение, поскольку целевая машина активно отказалась от него». Это можно как-то исправить? Тот же код отлично работает, если я размещаю его с помощью консольного приложения.

Ответы

Все ответы

У меня такая же ошибка. Можете ли вы сказать мне, что это за исправление.

Любое предложение будет оценено. Спасибо, Ян

Что касается проблемы с пользовательскими типами возврата, если вы настроите отслеживание

Есть ли исключения на сервере?

Я настроил трассировку в файле web.config в соответствии со статьей, но файл вывода или журнала не создается. Нужно ли мне создавать объект трассировки в моем тестовом коде (NUnit), чтобы явно запустить сегмент трассировки?

Или должно быть достаточно записи web.config?

Я разблокировал порт в брандмауэре, но по-прежнему не могу подключиться.

Что было исправлено?

Что касается проблем с возвратом пользовательских объектов, оказывается, что моя переменная-член IList, поскольку она может принимать значение NULL, требовала этого в контракте данных: [DataMember(EmitDefaultValue = false)]
Это то, что вызывало отказ службы связь. Сейчас опять все хорошо. Без сомнения, ошибка новичка, но я даже не слышал о WCF до того, как начал работать в своей новой компании. =о)

попробуйте удалить и снова добавить ссылки на сервисы. это поможет вам подключить wcf.

Я также получаю ту же ошибку при размещении с помощью службы Windows.

То же приложение, размещенное в консольном приложении, работает нормально.

Можете ли вы помочь мне с исправлением.

Заранее спасибо.

привет
я не знаю, будет вам это полезно или нет, но вы должны попробовать
сначала вы нажимаете на главный проект и нажимаете Start new instance
затем вы должны запустить windows приложение

Я настроил трассировку и прекрасно вижу файлы трассировки, но проблема в том, что я не вижу значка ошибки.

Я просматриваю все действия в средстве просмотра трассировки, и в одном из действий моей службы есть транспортные сообщения "Куда" и "из", я вижу начало действия, но нет ничего, что указывало бы на ошибку, и я настраиваю его для switchValue="Ошибка,Отслеживание Активности".

service behaviorConfiguration = "LCCService.rbagLCWS_ServiceBehavior"

адрес конечной точки = " mex "

имя поведения = " LCCService.rbagLCWS_ServiceBehavior " >

userNameAuthentication userNamePasswordValidationMode = " MembershipProvider " membershipProviderName = " PasswordProvider " />

serviceMetadata httpGetEnabled = " true " />

serviceDebug includeExceptionDetailInFaults = " true " />

имя привязки = " LCCService.rbagLCWS_ServiceBinding " >

режим безопасности = " Транспорт " >

transport clientCredentialType = " Basic " />

Я потратил почти 2 дня, пытаясь найти решение и как успешно установить тестовый сертификат, чтобы он заработал, но безрезультатно.

Пожалуйста, помогите. Я очень ценю это.

Я новичок в сети. когда я использую следующую программу для подключения порта particuler, она дает ошибку.

timout = Convert .ToInt32(txttimeout.Text);

IP-адрес localAddr = IP-адрес .Parse("127.0.0.1");

IPEndPoint remoteEndPoint = новый IPEndPoint (localAddr, порт);

TcpClient NetworkClient = TimeOutSocket .Connect(remoteEndPoint, timeout);

NetworkStream networkstream = NetworkClient.GetStream();

StreamReader streamReader = новый StreamReader (сетевой поток);

строка line = streamReader.ReadToEnd(); //streamReader.ReadLine();

Я получил такое же сообщение после добавления параметра реестра KeepAliveTime со значением 300000 в реестр окна в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters.

Когда я удалил реестр Windows "KeepAliveTime", он возобновил нормальную работу.

Есть ли какие-либо настройки, которые мне нужно проверить?

Я новичок в WCF. Я создал службу WCF и разместил ее в службе Windows. У меня возникла следующая ошибка при попытке создать клиентский прокси для службы.

"Произошла ошибка при загрузке 'http://localhost:8051/Service1/'.
Невозможно подключиться к удаленному серверу
Не удалось установить соединение, поскольку целевая машина активно отказалась от него 127.0 .0.1:8051
Метаданные содержат неразрешимую ссылку: "http://localhost:8051/Service1/".
Не удалось подключиться к http://localhost:8051/Service1/. TCP код ошибки 10061: не удалось установить соединение, так как целевая машина активно отказала ему 127.0.0.1:8051.
Невозможно подключиться к удаленному серверу
Не удалось установить соединение, поскольку целевая машина активно отказала ему 127.0 .0.1:8051
Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу."

Я видел несколько сообщений, связанных с такой проблемой, как разблокировка порта в брандмауэре. Я разблокировал все порты из брандмауэра, но проблема все еще возникает при создании клиентского прокси. Кто-то может помочь мне в этой проблеме. Я вставил свой файл конфигурации ниже.

Базы данных могут работать локально, на сервере или в облаке. Для серверных и облачных баз данных необходимо подключение к сети. Чтобы убедиться, что подключение доступно, используйте команды ping и telnet.

С помощью команды telnet вы можете проверить подключение к удаленным компьютерам и выполнить команды. Если вы укажете порт в качестве параметра для команды telnet, вы сможете проверить возможность подключения к удаленному хосту на данном порту. Если соединение установлено успешно, вы увидите сообщение: Подключено к .

Из соображений безопасности СУБД обычно разрывает все соединения telnet. Команда telnet позволяет проверить, открыт ли порт для связи.

Шаг 2. Проверьте свойства подключения

Каждая база данных (MySQL, PostgreSQL, Oracle или любой другой поставщик) имеет свои собственные параметры подключения. Большинство баз данных включают параметры подключения:

Хост: имя хоста компьютера или другого устройства, на котором хранится база данных. Это может быть IP-адрес 127.0.0.1 или доменное имя localhost .

База данных: имя базы данных, к которой вы хотите подключиться.Вы можете найти имя базы данных в настройках вашего сервера базы данных или спросить у администратора базы данных. В некоторых случаях можно запустить запрос в командной строке базы данных, чтобы увидеть имена всех доступных баз данных. Например, в MySQL вы можете запустить SHOW DATABASES; .

Пользователь: имя пользователя, имеющего достаточные привилегии для выполнения действий с базой данных. Запустите запрос в командной строке базы данных, чтобы увидеть имена всех доступных баз данных. Например, в MySQL вы можете запустить SHOW GRANTS; .

Пароль: пароль пользователя.

Порт: номер, определяющий точку соединения между хостами. Хосты используют номера портов, чтобы определить, с каким приложением, службой или процессом должно быть установлено соединение. Различные поставщики баз данных используют разные порты для своих баз данных. Следующий список представляет собой список номеров портов по умолчанию.

10000 (Hive Server2) или 9083 (Hive Metastore)

База данных Azure SQL

Служба запросов Couchbase

Майкрософт SQL Server

1433 (TCP), 1434 (может потребоваться UDP)

Реальные номера портов в вашей системе могут отличаться. Уточните у администратора базы данных, что вы используете правильный номер порта.

Убедитесь, что параметры соединения для выбранного соединения с базой данных указаны правильно. Дополнительные сведения о создании или изменении подключения к базе данных см. в разделе Подключение к базе данных.

Шаг 3. Проверьте версию драйвера

С помощью драйвера JDBC вы можете взаимодействовать с системой управления базами данных (СУБД) из PyCharm. Для каждой СУБД требуется свой драйвер JDBC. Убедитесь, что версия драйвера и версия СУБД совместимы друг с другом.

Из PyCharm можно загрузить драйверы для всех поддерживаемых поставщиков. Вы можете проверить полный список поддерживаемых поставщиков в списке драйверов. Кроме того, вы можете добавить свой собственный драйвер к существующему поставщику или создать новую запись драйвера для поставщика, которого нет в списке драйверов.

Чтобы открыть список драйверов, в окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных или нажмите Shift+Enter .

Загрузить драйвер и выбрать версию драйвера

Чтобы загрузить драйверы с FTP-сервера JetBrains, выберите поставщика в списке Драйверы и нажмите кнопку Загрузить версию. на панели файлов драйверов.

Чтобы изменить версию драйвера, нажмите ver. на панели файлов драйверов и выберите нужную версию драйвера.

Использование файлов драйверов пользователя

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

В диалоговом окне "Источники данных и драйверы" убедитесь, что вы находитесь на вкладке "Драйверы".

В диалоговом окне "Источники данных и драйверы" нажмите значок "Добавить" ().

В поле Имя введите имя водителя.

На панели "Файлы драйверов" нажмите значок "Добавить" () и выберите "Пользовательские JAR-файлы" .

Перейдите к JAR-файлу драйвера JDBC, выберите его и нажмите OK .

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

Чтобы создать источник данных из диалогового окна драйвера, нажмите "Создать источник данных" .

Настроить драйвер JDBC из существующего подключения

Вы можете добавить библиотеки к существующему драйверу или полностью заменить драйвер.

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

В диалоговом окне "Источники данных и драйверы" перейдите на вкладку "Драйверы" и выберите источник данных, в котором вы хотите изменить драйвер.

Нажмите ссылку "Драйвер" в настройках источника данных.

Щелкните указанную запись драйвера и нажмите Удалить ().

Чтобы отменить изменения, нажмите значок "Откатить изменения" () в нижней правой части окна.

На панели файлов драйверов щелкните значок "Добавить" () и выберите "Пользовательские JAR-файлы" .

В файловом браузере перейдите к JAR-файлу драйвера JDBC, выберите его и нажмите OK .

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

Шаг 4. Проверьте, требуется ли подключение по SSH или SSL

Чтобы сделать подключение к базе данных более безопасным, некоторые службы требуют использования SSH или SSL.

Следующая процедура описывает конфигурацию SSL, подходящую для большинства баз данных. Для некоторых баз данных необходимо использовать другой подход для успешного подключения. Вы можете увидеть примеры конфигурации для Cassandra и Heroku Postgres в документации DataGrip.

Подключиться к базе данных с помощью SSL

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

На вкладке "Источники данных" выберите источник данных, который вы хотите изменить.

Перейдите на вкладку SSH/SSL и установите флажок Использовать SSL.

В поле "Файл ЦС" перейдите к файлу сертификата ЦС (например, mssql.pem ).

В поле Файл сертификата клиента перейдите к файлу сертификата клиента (например, client-cert.pem ).

В поле Файл ключа клиента перейдите к файлу ключа клиента (например, client-key.pem ).

В списке Режим выберите режим проверки:

Требовать: проверяет, принимает ли сервер SSL-соединения для этого IP-адреса и распознает ли сертификат клиента.

Проверить ЦС: проверяет сервер, проверяя цепочку сертификатов вплоть до корневого сертификата, хранящегося на клиенте.

Полная проверка: проверяет хост сервера, чтобы убедиться, что он соответствует имени, хранящемуся в сертификате сервера. Соединение SSL завершается ошибкой, если сертификат сервера не может быть проверен.

Чтобы убедиться в успешном подключении к источнику данных, нажмите "Проверить подключение" .

Рекомендуется использовать сертификаты PEM.

С самозаверяющими сертификатами и, в некоторых случаях, с сертификатами, выданными доверенным корневым объектом, вы можете столкнуться с ошибками при использовании последней версии драйвера JDBC. Соединение SSL может завершиться ошибкой, если ваше хранилище ключей Java не принимает цепочки сертификатов. В качестве временного решения попробуйте понизить версию драйвера JDBC (например, для коннектора MySQL необходимо переключиться на версию 5.1.40).

Отключить SSL-соединение с базой данных

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

На вкладке "Источники данных" выберите источник данных, который вы хотите изменить.

Перейдите на вкладку SSH/SSL и снимите флажок "Использовать SSL".

Копировать настройки SSL из других источников данных

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

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

На вкладке "Источники данных" выберите источник данных, который вы хотите изменить.

Перейдите на вкладку SSH/SSL и установите флажок Использовать SSL.

Нажмите ссылку Копировать из и выберите конфигурацию, которую хотите скопировать.

После того как вы настроили параметры SSH, на вкладке «Общие» используйте адрес хоста и порт базы данных, а не localhost .

Secure Shell или SSH — это сетевой протокол, используемый для шифрования соединения между клиентом и сервером.

Все созданные SSH-соединения совместно используются всеми источниками данных, которые есть у вас в проекте. Если вы не хотите совместно использовать соединение между проектами, установите флажок «Видимо только для этого проекта» в настройках соединения SSH.

Подключиться к базе данных с помощью SSH

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

Выберите профиль источника данных, в котором вы хотите изменить настройки подключения.

Перейдите на вкладку SSH/SSL и установите флажок Использовать туннель SSH.

Нажмите кнопку "Добавить конфигурацию SSH" ().

В диалоговом окне SSH нажмите кнопку "Добавить".

Если вы не хотите делиться конфигурацией между проектами, установите флажок «Видимо только для этого проекта».

В полях Хост , Имя пользователя и Порт укажите данные подключения.

В списке Тип аутентификации вы можете выбрать метод аутентификации:

Пароль: для доступа к хосту с паролем. Чтобы сохранить пароль в PyCharm, установите флажок Сохранить пароль.

Пара ключей (OpenSSH или PuTTY): для использования аутентификации SSH с парой ключей. Чтобы применить этот метод аутентификации, вы должны иметь закрытый ключ на клиентской машине и открытый ключ на удаленном сервере. PyCharm поддерживает закрытые ключи, созданные с помощью утилиты OpenSSH.

Укажите путь к файлу, в котором хранится ваш закрытый ключ, и введите парольную фразу (если есть) в соответствующие поля. Чтобы PyCharm запомнил парольную фразу, установите флажок Сохранить парольную фразу.

Конфигурация OpenSSH и агент аутентификации: для использования ключей SSH, которыми управляет вспомогательное приложение для учетных данных (например, Pageant в Windows или ssh-agent в macOS и Linux).

Подробнее о работе с ключами SSH см. в разделе Создание нового ключа SSH и добавление его в руководство по ssh-agent.

Отключить SSH-соединение с базой данных

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных .

Выберите профиль источника данных, в котором вы хотите изменить настройки подключения.

Перейдите на вкладку SSH/SSL и снимите флажок Использовать туннель SSH.

Создайте туннель SSH с помощью PuTTY (Windows)

В диалоговом окне «Конфигурация PuTTY» выберите «Подключение | SSH | Аутентификация .

В поле Файл закрытого ключа для аутентификации укажите путь к файлу закрытого ключа и нажмите Открыть .

В окне командной строки укажите имя пользователя, которое вы используете для туннеля SSH, и нажмите Enter . Не закрывайте окно командной строки.

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных на панели инструментов.

Выберите профиль источника данных, в котором вы хотите изменить настройки подключения.

Перейдите на вкладку SSH/SSL и установите флажок Использовать туннель SSH.

В списке Тип аутентификации выберите Конфигурация OpenSSH и агент аутентификации.

В полях Хост-прокси , Пользователь прокси-сервера и Порт укажите сведения о соединении.

Чтобы убедиться в успешном подключении к источнику данных, нажмите "Проверить подключение" .

Создайте туннель SSH с помощью Pageant (Windows)

Pageant — это агент аутентификации SSH для PuTTY, PSCP, PSFTP и Plink. Pageant хранит ваш закрытый ключ, и пока он работает, он предоставляет разблокированный закрытый ключ PuTTY или другим инструментам, таким как PyCharm. Вы можете найти значок Pageant на панели задач Windows.

На панели задач Windows щелкните правой кнопкой мыши значок Pageant и выберите "Добавить ключ" .

В диалоговом окне "Выбор файла закрытого ключа" перейдите к файлу закрытого ключа (файлу PPK) и нажмите "Открыть" .

(Необязательно) Введите кодовую фразу закрытого ключа и нажмите Enter .

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных на панели инструментов.

Выберите профиль источника данных, в котором вы хотите изменить настройки подключения.

Перейдите на вкладку SSH/SSL и установите флажок Использовать туннель SSH.

В списке Тип аутентификации выберите Конфигурация OpenSSH и агент аутентификации.

В полях Хост-прокси , Пользователь прокси-сервера и Порт укажите сведения о соединении.

Чтобы убедиться в успешном подключении к источнику данных, нажмите "Проверить подключение" .

Создайте туннель SSH с помощью ssh-agent (macOS и Linux)

Выполните все команды для ssh-agent в командной строке.

Убедитесь, что агент ssh запущен.

Добавьте свой ключ в агент (в следующем примере путь к ключу ~/.ssh/id_rsa ).

(Необязательно) В macOS можно добавить параметр -K к команде ssh-add, чтобы сохранить парольные фразы в цепочке ключей. В macOS Sierra и более поздних версиях вам необходимо создать файл конфигурации в ~/.ssh/ со следующим текстом:

Если у вас есть другие закрытые ключи в каталоге .ssh, добавьте строку IdentityFile для каждого ключа. Например, если второй ключ имеет имя id_ed25519, добавьте IdentityFile ~/.ssh/id_ed25519 в качестве дополнительной строки для второго закрытого ключа.

Список всех добавленных ключей.

В окне инструмента базы данных ( Вид | Окна инструментов | База данных ) щелкните значок Свойства источника данных на панели инструментов.

Выберите профиль источника данных, в котором вы хотите изменить настройки подключения.

Перейдите на вкладку SSH/SSL и установите флажок Использовать туннель SSH.

В списке Тип аутентификации выберите Конфигурация OpenSSH и агент аутентификации.

В полях Хост-прокси , Пользователь прокси-сервера и Порт укажите сведения о соединении.

Чтобы убедиться в успешном подключении к источнику данных, нажмите "Проверить подключение" .

Шаг 5. Напишите нам, если вам все еще нужна помощь

Написать команде PyCharm

Дополнительную информацию о других источниках устранения неполадок см. в разделе Устранение неполадок.

Читайте также: