Validacion MySQL caching_sha2_password

Post Reply
Enrrique Vertiz
Posts: 582
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Validacion MySQL caching_sha2_password

Post by Enrrique Vertiz »

Buen dia

Consulta FWH se conecta a MySQL usando: mysql_native_password (que hasta la 8.0 se soportaba, 8.4 esta desabilitado y 9.X ya no existe) o caching_sha2_password que ahora es el estandar por default, o soporta ambos sin problemas ??
Gracias

Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

Buen dia...

Pregunto .... está previsto seguir con soporte a las nuevas versiones de mysql y mariadb con fivewin (FWCONNECT )

JONSSON RUSSI

User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Validacion MySQL caching_sha2_password

Post by Antonio Linares »

Entiendo que las nuevas versiones deben mantener compatibilidad con versiones anteriores :idea:

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
sysctrl2
Posts: 1144
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Validacion MySQL caching_sha2_password

Post by sysctrl2 »

llevo mas de 25 años desarrollando con MySql
siempre hay compatibilidad desde FWH
saludos!

Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

Buena noche...

La pregunta es por esta consulta...

"Consulta FWH se conecta a MySQL usando: mysql_native_password (que hasta la 8.0 se soportaba, 8.4 esta desabilitado y 9.X ya no existe) o caching_sha2_password que ahora es el estandar por default, o soporta ambos sin problemas ??"

y al no recibir respuesta,,, genere la consulta

User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Validacion MySQL caching_sha2_password

Post by Antonio Linares »

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:

  1. Descarga el MariaDB C Connector (archivo libmariadb.dll).
  2. Renómbralo a libmysql.dll (o configúralo en tu código para cargar libmariadb.dll).
  3. 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):

Code: Select all | Expand

-- 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ósticoNinguna (tu código oServer:Connect(...) no cambia). DLL Antigua (5.x)Solo mysql_nativeFalla con MySQL 8 default. Debes actualizarla. DLL Nueva (8.x)AmbosFunciona, pero puede requerir dependencias SSL adicionales. MariaDB DLL (3.x)Ambos (Recomendado)Funciona perfecto con MySQL 8/9 y caching_sha2.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Enrrique Vertiz
Posts: 582
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: Validacion MySQL caching_sha2_password

Post by Enrrique Vertiz »

Saludos Antonio

Gracias por la explicacion, me queda claro y empezare a probar con el DLL de MariaDB

Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

Buen dia...

O lo mas rapido seria... ?

Manteneter : ECHO "%fwhdir%\lib\libmariadb32.lib >> xhb.tmp" y libmariadb.dll

y conectarse a un server de mariadb o mysql 8.4 +... sin ninguna restricion de poder usar las funcionalidades de mysql 8.4 + ?

Gracias

russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

Buen dia...

Error al conectarse a mysql 9.5

Con la dll de mysql ...si genera mensaje que el cliente no soporta autenticacion nativa...

y con la dll renombrada a mariadb.. genera este error

2019
Can´t initialize character set unknown (path: compiled_in)

russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

modificando el my.ini... se corrigio

[client]
default-character-set = utf8mb4
port=3310

[mysql]
no-beep
default-character-set = utf8mb4

[mysqld]

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

pero ahora el error es :
2058 puglin caching_sha2_password could no be loaded: no se puede encontrar el modulo especificado

nota : desde heidsql + libmariadb.dll .. se conecta bien

User avatar
carlos vargas
Posts: 1815
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Validacion MySQL caching_sha2_password

Post by carlos vargas »

En el caso de la dll de libmysql.dll de Oracle, en las versiones más recientes >=7.5, todos los plugins, incluido "caching_sha2_password"
están incluidos en la propia dll, por ello el mayor tamaño de la dll > 6MB.

En el caso de libmariadb no es así, ya que están en dll independientes, en el conector hay una carpeta plugin donde están las dll de cada plugin que se puede usar, por ejemplo "caching_sha2_password", se debe tomar y ponerla junto a la dll de mariadb.
Image
Image
por ello el tamaño de la dll es menor.

Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
russimicro
Posts: 413
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Validacion MySQL caching_sha2_password

Post by russimicro »

Carlos buen día

Funciono perfecto ... copiando el plugin

Compilando con la lib de mariadb y renombrando la dll de mariadb a mysql ... no deben coexistir las 2 dll ( mariadb y mysql)

Gracias

JONSSON RUSSI

Post Reply