La respuesta corta es: Depende totalmente de la librer铆a cliente (libmysql.dll o libmariadb.dll) que est茅s vinculando con tu aplicaci贸n FWH, no del c贸digo fuente de FiveWin en s铆.
FiveWin (y Harbour) act煤an como un "puente". Si tu aplicaci贸n usa una DLL antigua (de la 茅poca de MySQL 5.x), no podr谩 negociar caching_sha2_password y fallar谩 con MySQL 8.0+ (y definitivamente con 9.x).
Aqu铆 tienes el desglose t茅cnico de la situaci贸n y c贸mo solucionarlo:
1. El estado actual (FWH + MySQL 8/9)
- mysql_native_password: Es el m茅todo "legacy". Las versiones antiguas de libmysql.dll (que muchos programadores de FiveWin siguen usando por costumbre) solo soportan este m茅todo.
- MySQL 8.0: Lo soporta, pero no es el default.
- MySQL 8.4: Est谩 deshabilitado por defecto (hay que reactivarlo en el my.ini).
- MySQL 9.x: Ha sido eliminado.
caching_sha2_password: Es el est谩ndar moderno. Requiere un intercambio de claves RSA o una conexi贸n segura (SSL).
- Para que FWH soporte esto, necesitas una libmysql.dll versi贸n 8.0 o superior, o el conector de MariaDB.
2. 驴Soporta FWH ambos?
S铆, pero solo si actualizas la DLL.
FiveWin (a trav茅s de la clase TMySQL, TDolphin o ADODB) simplemente pasa las credenciales a la DLL.
- Si usas una libmysql.dll antigua (v5.x): Solo funcionar谩 mysql_native_password. Tu app fallar谩 al conectar a un servidor MySQL 8+ con configuraci贸n default.
- Si usas una libmysql.dll moderna (v8.x): Soporta ambos (native y caching_sha2).
-----
3. La Soluci贸n Recomendada: El Conector de MariaDB
En la comunidad de Harbour/FiveWin, la soluci贸n est谩ndar de facto para conectar a MySQL 8.0, 8.4 y 9.X no es usar la DLL de Oracle MySQL, sino la de MariaDB, debido a que es m谩s compatible, ligera y maneja mejor la autenticaci贸n sin requerir instalaciones complejas de SSL en el cliente.
Pasos para soportar caching_sha2_password en FWH:
- Descarga el MariaDB C Connector (archivo libmariadb.dll).
- Ren贸mbralo a libmysql.dll (o config煤ralo en tu c贸digo para cargar libmariadb.dll).
- Col贸calo junto a tu ejecutable (.exe).
Esta librer铆a es capaz de conectar a servidores MySQL modernos usando los nuevos protocolos de encriptaci贸n sin cambiar tu c贸digo fuente PRG.
4. Soluci贸n Alternativa ("Workaround" r谩pido para MySQL 8.0/8.4)
Si no puedes cambiar la DLL de inmediato y necesitas que tu sistema funcione ya con un servidor nuevo (previo a la versi贸n 9.0), debes cambiar la configuraci贸n del usuario en el servidor para que use el m茅todo antiguo.
Ejecuta esto en tu gestor de base de datos (HeidiSQL, Workbench):
-- Cambiar al usuario 'tu_usuario' para usar el password nativo antiguo
ALTER USER 'tu_usuario'@'%' IDENTIFIED WITH mysql_native_password BY 'tu_password';
FLUSH PRIVILEGES;
Advertencia: Esto no funcionar谩 en MySQL 9.0, ya que el plugin nativo ha sido eliminado. En MySQL 8.4, primero debes habilitar mysql_native_password=ON en el archivo de configuraci贸n del servidor antes de ejecutar el comando SQL.
Resumen para tu desarrollo
| Componente | 驴Qu茅 soporta? | Acci贸n requerida |
| FWH (C贸digo PRG) | Agn贸stico | Ninguna (tu c贸digo oServer:Connect(...) no cambia). |
| DLL Antigua (5.x) | Solo mysql_native | Falla con MySQL 8 default. Debes actualizarla. |
| DLL Nueva (8.x) | Ambos | Funciona, pero puede requerir dependencias SSL adicionales. |
| MariaDB DLL (3.x) | Ambos (Recomendado) | Funciona perfecto con MySQL 8/9 y caching_sha2. |