It looks like a bug in Workbench. DriverManager::getConnection throws authentication error only for errors with codes 1045, and 1044, but not for 1698 (ERROR 1698 (28000): Access denied for user/ER_ACCESS_DENIED_NO_PASSWORD_ERROR).
Workbench has following logic described in comments
// In the 1st connection attempt, no password is supplied
// If it fails, keychain is checked and used if it exists
// If it fails, an interactive password request is made
Next connection attempted only in case of authentication error on previous step. Since driver manager does not consider error 1698 as authentication error, next authentication attempts do not performed and connection fails with general error.
It looks like a bug in Workbench. DriverManager: :getConnection throws authentication error only for errors with codes 1045, and 1044, but not for 1698 (ERROR 1698 (28000): Access denied for user/ER_ ACCESS_ DENIED_ NO_PASSWORD_ ERROR).
Workbench has following logic described in comments
// In the 1st connection attempt, no password is supplied
// If it fails, keychain is checked and used if it exists
// If it fails, an interactive password request is made
Next connection attempted only in case of authentication error on previous step. Since driver manager does not consider error 1698 as authentication error, next authentication attempts do not performed and connection fails with general error.