개요
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