Instalación sin conexión de ODBC para MySQL en Linux y resolución de incidencias

Compilación e instalación de unixODBC

Para habilitar la conectividad ODBC en entornos Linux sin acceso a internet, es necesario compilar unixODBC desde su código fuente. Tras obtener el archivo tarball y transferirlo al servidor, se descomprime y se prepara la compilación:

tar -xzf unixODBC-2.3.12.tar.gz
cd unixODBC-2.3.12
./configure --prefix=/opt/unixodbc --sysconfdir=/etc --libdir=/usr/lib64 --includedir=/usr/include

Si la generación del Makefile falla, generalmente se debe a la ausencia de compiladores como gcc o librerías glibc. En un contexto offline, se deben obtener los paquetes RPM necesarios y forzar su instalación ignorando las dependencias:

rpm -Uvh *.rpm --nodeps --force

Verificada la presencia del compilador con gcc --version, se procede a construir e instalar el gestor:

make && make install

Al ejecutar odbcinst -j para comprobar la instalación, puede aparecer el error odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file. Esto indica que el sistema no ubica las librerías compartidas. Si estas se instalaron en /lib o /usr/lib, se soluciona ejecutando ldconfig. Si la ruta fue distinta, como /usr/local/lib, se debe añadir dicha ruta al archivo de configuración /etc/ld.so.conf o crear un archivo .conf dentro de /etc/ld.so.conf.d/, y luego ejecutar ldconfig para actualizar la caché de enlaces dinámicos.

Integración del controlador ODBC de MySQL

Con el administrador ODBC operativo, el siguiente paso es instalar el conector específico de MySQL. Se debe obtener el paquete RPM del sitio oficial y transferirlo al servidor para su instalación forzada:

rpm -Uvh mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm --nodeps --force

Para confirmar que el sistema reconoce el nuevo controlador, se lista la configuración actual:

odbcinst -q -d

Posteriormente, se define el DSN (Data Source Name) editando el archivo /etc/odbc.ini:

[midb_prod]
Description = Conexión a Base de Datos MySQL
Driver = MySQL ODBC 8.0 Unicode Driver
Server = 192.168.1.50
Database = sistema_produccion
Port = 3306
User = usr_admin
Password = pwd_seguro

Para validar la conectividad por terminal, se utiliza la utilidad isql seguida del identificador del DSN:

isql midb_prod

Si la respuesta es [ISQL]ERROR: Could not SQLconnect, es fundamental ampliar el diagnóstico usando el modo detallado: isql -v midb_prod. Las causas más frecuentes de este fallo incluyen:

  • Errores tipográficos, espacios en blanco o identificadores no coincidentes en el archivo odbc.ini.
  • El archivo de configuración no se encuentra en la ruta que reporta odbcinst -j.
  • El servidor de base de datos deniega el acceso remoto por falta de permisos para la IP del cliente.

Ajuste de codificación de caracteres

Tras establecer una conexión exitosa, es posible experimentar problemas de caracteres corruptos ("mojibake"). Para mitigar esto, se debe sincronizar el juego de caracteres en dos niveles. Primero, añadir el parámetro de charset en el archivo /etc/odbc.ini dentro de la configuración del DSN:

Charset=GBK

Segundo, asegurarse de que la configuración del servidor MySQL (usualmente my.cnf) aplique el mismo estándar:

[client]
default-character-set=GBK

[mysql]
default-character-set=GBK

[mysqld]
character_set_server=GBK

Etiquetas: MySQL ODBC linux unixODBC isql

Publicado el 6-30 04:29