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