Problem był spowodowany dwoma współbieżnymi problemami.
- Na zdalnym serwerze globalne ustawienie OLD_PASSWORDS zostało ustawione na 1 – co oznacza, że hasła były szyfrowane w metodzie sprzed wersji 4.1.
- konto root zostało zakodowane w nowszej metodzie haszowania pomimo ustawienia globalnego (przypuszczalnie zostało wprowadzone przed ustawieniem tego parametru), co oznacza, że przyznano mu dostęp przez połączenie ODBC, ponieważ nowy hasz został rozpoznany.
Ustawienie globalne spowodowało, że funkcja PASSWORD() w MySQL zahaszowała każdą wprowadzoną wartość w starej metodzie zamiast w nowej, tak jak powinna.
Założyłem, że DBA ustawił OLD_PASSWORDS na 1 nie bez powodu, więc jako rozwiązanie użyłem
Korzystanie z funkcji password() wcześniej nie działało, ponieważ globalne ustawienie OLD_PASSWORDS=1 powodowało, że używała tego samego skrótu, co funkcja OLD_PASSWORD(). Ustawienie sesji umożliwiło wygenerowanie prawidłowego hasła.