нему проходит через SSH туннели. Захожу в идею, открываю Database и пишу Host: localhost, Port: 3301 итд итп. Нажимаю Test Connection и все подключается и работает как надо (через JDBC коннектор). Теперь ставлю pip install mysqlclient и прописываю теже host='localhost' port=3301 в MySQLDb и получаю Access Denied, а если меняю на host='127.0.0.1', то получаю OperationalError: (2026, 'SSL connection error: unknown error number'). Ничего не понял в мускул5.7 все работало как надо, но админы обновили его до 8.0. Все остальные сидят на го/пхп и не испытывают проблем. Куда копать и что делать?
Разные пользователи видимо. У MySQL в имя пользователя входит хост с которого ты коннектишься, IP или имя хоста, соответственно у тебя могут быть разные пользователи даже если формальное имя пользователя (логин) один и тот же. Соответственно тебе надо выдать права всем вариантам
Новая версия mysql тут скорее всего ни при чем, А что такое имя хоста или его ip адрес, ты вероятно понимаешь: одно ПО одно имя берет, другое - другое. А хост тот же реально.
Вроде нашел корень проблемы. Оказывается mysqlclient обращается без указания опции ssl_mode и БД отвергает такого клиента. А jdbc клиент видимо подставляет туда значение ssl_mode=disabled и потом работает. И прикол в том что поддержка опции ssl_mode в mysqlclient добавили буквально три дня назад в мастер ветку: https://github.com/PyMySQL/mysqlclient-python/commit/1a5ae1daf87c4a8135f72d6c870d9edafabd1185 Я чота офигеваю почему эта опция так поздно добавилась в один из популярнейших клиентов.
Обсуждают сегодня