Рейтинг:0

Ошибка подключения соединителя MySQL/ODBC из-за несоответствия DNS

флаг cn

У меня проблемы с настройкой нового соединения MySQL с Источники данных ODBC (64 бита) утилита на Windows Server 2019. Я использую Верстак MySQL для определения удаленного доступа следующим образом:

введите описание изображения здесь

Пользователю предоставляется ВЫБРАТЬ доступ только:

введите описание изображения здесь

Я заметил, что сервер, с которого мне нужно инициировать соединение (срв-бо) имеет статический IP-адрес, который уже использовался в прошлом другим сервером (srv-mooc). Старая запись удаленного сервера сохранилась в DNS контроллера домена, поэтому я удалил ее. С тех пор Источники данных ODBC (64 бита) утилита продолжает пытаться соединиться с древним именем сервера (srv-mooc)... Кажется, что какая-то информация о подключении хранится где-то в памяти, но я не могу понять.

До сих пор я пытался очистить кеш DNS на моем Windows Server 2019, с которого я инициирую соединение. Я также пытался установить соединение из другого пользовательского сеанса и после перезагрузки сервера. Проблема все еще существует:

введите описание изображения здесь

Сообщение об ошибке:

введите описание изображения здесь

Учетные данные пользователя отлично работают с другого Windows Server 2019, поэтому детали подключения в порядке.

Любая идея помочь?

Томас

vidarlo avatar
флаг ar
Похоже, что пользователю не разрешено входить в систему с хоста, с которого он подключается. Это объясняет, почему он работает с другой машины. Как определяется пользователем серверная часть? https://www.javatpoint.com/mysql-show-пользователи
wiltomap avatar
флаг cn
Спасибо. На самом деле пользователю разрешено.Я авторизовал единственный сервер `srv-abc`, с которого пользователь может получить доступ к БД. Если я удалю этот фильтр и авторизую какие-либо серверы, проблемы больше не будет... Похоже, что это действительно проблема DNS.
vidarlo avatar
флаг ar
В сообщении об ошибке говорится, что пользователь подключается с `srv-mooc.siveer.fr`...
wiltomap avatar
флаг cn
Извините, я отредактировал свой первоначальный пост, чтобы сделать его более понятным.
vidarlo avatar
флаг ar
Нет причин для сожалений :) Мои вопросы были направлены на то, чтобы сделать вопрос лучше - и, таким образом, повысить вероятность того, что вы получите хороший ответ :) В том, что мы пишем, легко упустить детали!
Manu avatar
флаг us
Вы можете сделать обратный поиск DNS? Не знаю, нужно ли, но может быть. Напишите srv-bo% маленькими буквами... на всякий случай ;)
wiltomap avatar
флаг cn
Обратный поиск DNS в порядке и указывает на правильное имя сервера. `srv-bo%` в нижнем регистре ничего не меняет...
флаг cn
Привязан ли сервер MySQL к определенному диапазону IP-адресов?
wiltomap avatar
флаг cn
Да, но это классический диапазон из 254 адресов, в который включены оба сервера (старый и настоящий).
Рейтинг:1
флаг us

Вполне возможно, что MySQL поддерживает внутренний DNS-кеш хостов. Для быстрого и грязного теста попробуйте УСТАНОВИТЬ ГЛОБАЛЬНЫЙ host_cache_size=0; на сервере (если вас беспокоит нагрузка на DNS, не забудьте сбросить ее на ненулевое значение после тестирования).

Изменить: для 5.5 MySQL попробуйте СМЫВНЫЕ ХОСТИ;

Использованная литература: https://dev.mysql.com/doc/refman/8.0/en/host-cache.html#host-cache-flushing http://download.nust.na/pub6/mysql/doc/refman/5.5/en/dns.html

wiltomap avatar
флаг cn
Хорошая идея! ... но (извините) таблица `mysql.host` на удаленном сервере пуста (думаю, `host_cache_size` уже установлен на 0). На сервере, с которого я инициирую соединение, у меня нет локального экземпляра MySQL.
Brandon Xavier avatar
флаг us
Если вы проверяете таблицы вручную, вам нужно взглянуть на `mysql.host_cache`, а не `mysql.host`
wiltomap avatar
флаг cn
У меня такой таблицы нет... Версия MySQL 5.5.62.
Brandon Xavier avatar
флаг us
См. правки для 5.5 MySQL (о чем было бы полезно знать заранее :-)
Brandon Xavier avatar
флаг us
Один последний комментарий: `host_cache` фактически выставляется (в версиях >= 5.6) через псевдо БД `performance_schema`, а не через `mysql` (он отображает структуры данных в памяти в таблицы, подобные SQL)
Рейтинг:0
флаг ng

Вы можете попробовать отредактировать этот файл C:\Windows\System32\драйверы\etc\hosts в котором хранятся все локальные записи DNS. Также проверьте, каков ответ текущего DNS-сервера, который использует Windows, похоже, что он где-то имеет запись PTR.

wiltomap avatar
флаг cn
Я думаю, что файл `hosts` является файлом по умолчанию (все строки закомментированы, а `srv-mooc` нет). Я вообще не нахожу записи в DNS контроллера домена. Команда `nslookup` возвращает имя нужного сервера, а не древнего. Я нигде не нахожу записи PTR...
Zhivko Zhelev avatar
флаг ng
Когда вы создаете правило для блокировки других подключений, как вы указываете имя хоста разрешенного?
wiltomap avatar
флаг cn
Я ввел `srv-bo%`, так как мне нужен другой сервер с именем `srv-bo-rct`, чтобы иметь возможность подключиться. Я попытался ввести `srv-bo` без подстановочного знака, но проблема не устранена.
Zhivko Zhelev avatar
флаг ng
Я не уверен, как это будет работать. Я предлагаю вам просто разрешить оба хоста по отдельности с полным именем, это должно сработать. Пожалуйста, проверьте ответ.
wiltomap avatar
флаг cn
Нет, это не так. Как я писал в своем предыдущем комментарии, я попытался ввести только `srv-bo` и получил ту же ошибку.
Zhivko Zhelev avatar
флаг ng
``` ПРЕДОСТАВЬТЕ ВСЕ ПРИВИЛЕГИИ НА БД.* КОМУ srv-mooc@'srv-mooc.siveer.fr', ОПРЕДЕЛЕННОМУ 'ПАРОЛЕМ';``` вот так, верно?
wiltomap avatar
флаг cn
Я использую *MySQL Workbench* для определения удаленного доступа. Так что это определено в этом интерфейсе приложения, внутри поля фильтрации.
wiltomap avatar
флаг cn
Только что обновил начальный пост со скриншотами для *MySQL Workbench*.
Zhivko Zhelev avatar
флаг ng
да лучше, введите ```имя хоста``` в командной строке на сервере Windows
Zhivko Zhelev avatar
флаг ng
и можно ли просто создать двух разных пользователей для БД и указать полные имена хостов?
wiltomap avatar
флаг cn
Команда `hostname` возвращает `SRV-BO`, как и ожидалось. Создание нового пользователя, отфильтрованного из `SRV-BO`, дает ту же ошибку. Я также пытался авторизовать любой сервер, введя только подстановочный знак `%`, но безуспешно...
Zhivko Zhelev avatar
флаг ng
попробуйте дать больше разрешений этому пользователю ```srv-bo```
wiltomap avatar
флаг cn
Тот же результат, к сожалению...
Zhivko Zhelev avatar
флаг ng
Я думаю, что что-то не так с настройками DNS, вы сказали, что удалили эту старую запись после появления этой проблемы, поэтому, пожалуйста, проверьте их снова.
wiltomap avatar
флаг cn
Проблема всегда возникала как до, так и после удаления нежелательной записи DNS. Я думаю, что мне не следовало пытаться инициировать соединение перед удалением записи DNS. Как я писал в своем посте, я думаю, что где-то хранится какой-то кеш, но не в обычных местах или файлах...
Zhivko Zhelev avatar
флаг ng
Это проблема, потому что все DNS-запросы имеют ttl (время жизни), которое может составлять максимум 3600 секунд, и если это время пройдет, оно должно разрешить новое имя хоста... Идея: создать запись CNAME из ```srv-mooc.siveer. fr на srv-bo.siveer.fr и посмотреть, сработает ли это
Рейтинг:0
флаг cn

После множества поисков и ценной помощи в различных комментариях мне в конце концов удалось решить проблему, выполнив СМЫВНЫЕ ХОСТИ; SQL-запрос в редакторе запросов на удаленном сервере.

См. документацию по MySQL 5.5. здесь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.