Il problema qui era dovuto a due problemi simultanei.
- Sul server remoto, l'impostazione globale OLD_PASSWORDS era impostata su 1, il che significa che le password venivano sottoposte a hash nel metodo precedente alla 4.1.
- l'account root era stato codificato nel metodo di hashing più recente nonostante l'impostazione globale (presumibilmente era stato inserito prima dell'impostazione di questo parametro), il che significa che gli veniva concesso l'accesso tramite la connessione ODBC perché il nuovo hash era stato riconosciuto.
L'impostazione globale ha fatto sì che la funzione PASSWORD() in MySQL eseguisse l'hashing di qualsiasi valore inserito nel vecchio metodo anziché nel nuovo metodo come avrebbe dovuto.
Ho pensato che il DBA avesse impostato OLD_PASSWORDS su 1 per una buona ragione, quindi come soluzione ho usato
L'utilizzo della funzione password() non funzionava in precedenza perché l'impostazione globale OLD_PASSWORDS=1 faceva sì che utilizzasse lo stesso hashing della funzione OLD_PASSWORD(). L'impostazione della sessione gli ha consentito di produrre la password corretta.