Linux

[Linux] unixODBC - MySQL 연결

비번변경 2023. 5. 3. 16:30

개요

2023.05.02 - [Ubuntu] unixODBC 설치에서 unixODBC를 설치했는데, 이 글에서는 unixODBC를 이용해 MySQL에 연결하도록 구성한다. 연결할 MySQL은 8.0.32이다.

 

구성 환경

- AWS EC2

- Ubuntu 20.04 LTS arm64

- MySQL 8.0.32

 

지난 글과 마찬가지로 최대한 root 권한을 덜 사용하는 방식으로 진행한다.

 

 

드라이버 설치

unixODBC로 데이터베이스를 연결하기 위해서는 데이터베이스 드라이버가 필요하다. unixODBC로 연결할 수 있는 데이터베이스는 https://www.unixodbc.org/drivers.html에서 확인할 수 있다. 이 글에서는 MySQL과 연결할 수 있도록 MySQL ODBC Connector를 설치해야 한다.

 

1. 드라이버 다운로드

MySQL Connector/ODBC : https://dev.mysql.com/downloads/connector/odbc/

참고 문서 : https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

이 글의 경우, Ubuntu 20.04 OS를 사용하고 있다. 하지만 다운로드 링크에서 OS를 Ubuntu Linux로 지정하면 arm64 버전은 지원하지 않기 때문에

OS를 Linux - Generic으로 지정하면 선택할 수 있는 버전 중 ARM, 64-bit를 다운로드하여 설치한다. 만약 deb 패키지 대신 압축 파일을 풀어서 설치할 생각이라면 이 글과 동일하게 OS를 Linux - Generic으로 지정한다.

 만약 최신 버전이 아니라 이전 버전을 설치할 때는 Archives 탭에서 OS와 드라이브 버전을 지정하여 설치한다.

다운로드할 버전을 결정했으면, wget 명령어로 다운로드한다.

wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.32-linux-glibc2.28-aarch64.tar.gz

 

2. 압축 해제

압축을 풀고, 경로는 Drivers/mysql-connector-odbc라는 경로로 변경한다. 경로 변경은 선택 사항이다.

tar xvzf mysql-connector-odbc-8.0.32-linux-glibc2.28-aarch64.tar.gz
mkdir -p ~/Drivers/mysql-connector-odbc
cp -r ~/mysql-connector-odbc-8.0.32-linux-glibc2.28-aarch64/* ~/Drivers/mysql-connector-odbc/

 

 

LB_LIBRARY_PATH 추가

LB_LIBRARY_PATH란 응용 프로그램이 동적 라이브러리를 조회하는 경로이다. unixODBC 라이브러리 경로를 LB_LIBRARY_PATH 환경변수로 지정한다.

export LD_LIBRARY_PATH=/home/ubuntu/unixODBC/lib

 

필요 시 .bashrc 등에 추가한다.

 

 

DSN 구성

ODBF를 사용하는 애플리케이션에서 개별 매개 변수를 지정하는 대신 DSN(Data Source Name)을 사용해 통신하도록 ODBC DSN을 구성한다.

참고 문서 : https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration.html

 

Unix에서는 DSN을 $UNIXODBC_HOME/etc/odbc.ini에 구성한다. 아래는 Connector/ODBC 8.0을 DSN으로 구성하는 예시 파일이다.

;
;  odbc.ini configuration for Connector/ODBC 8.0 driver
;

[ODBC Data Sources]
myodbc8w     = MyODBC 8.0 UNICODE Driver DSN
myodbc8a     = MyODBC 8.0 ANSI Driver DSN

[myodbc8w]
Driver       = /usr/local/lib/libmyodbc8w.so
Description  = Connector/ODBC 8.0 UNICODE Driver DSN
SERVER       = localhost
PORT         =
USER         = root
Password     =
Database     = test
OPTION       = 3
SOCKET       =

[myodbc8a]
Driver       = /usr/local/lib/libmyodbc8a.so
Description  = Connector/ODBC 8.0 ANSI Driver DSN
SERVER       = localhost
PORT         =
USER         = root
Password     =
Database     = test
OPTION       = 3
SOCKET       =

이 파일을 참고하여 아래와 같이 odbc.ini 파일을 작성한다.

 

 

DSN 구성 확인

odbc DSN이 정상적으로 구성되었는지 확인한다.

$MYSQL_ODBC_CONNECTOR_HOME/bin/myodbc-installer -s -l
# -s : 데이터소스 대상
# -l : list

# 예시
~/Drivers/mysql-connector-odbc/bin/myodbc-installer -s -l

만약 실행 시, 아래와 같이 라이브러리를 찾을 수 없다는 에러가 발생하면 LD_LIBRARY_PATH 등의 방식으로 라이브러리 경로를 정상적으로 지정했는지 살펴본다.

/home/ubuntu/Drivers/mysql-connector-odbc/bin/myodbc-installer: error while loading shared libraries: libodbc.so.2: cannot open shared object file: No such file or directory

 

 

데이터베이스 연결

구성한 DSN로 데이터베이스를 정상적으로 연결할 수 있는지 확인한다. unixODBC 클라이언트 명령줄 도구인 isql을 사용하여 확인할 수 있다.

$UNIXODBC_HOME/bin/isql <DSN>

# 예시
~/unixODBC/bin/isql airflow

연결한 뒤 SQL도 실행해본다.

 

 

참고 문서

https://wiki.kreonet.net/linux-guide/path-51119440.html

https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-dsn-unix.html