Сегодня я покажу, как много нюансов было чтобы установить интерфейс ODBC
позволяющий языкам программирования взаимодействовать с базой данных MySQL
на Ubuntu 22.04 Server
. Данный интерфейс у меня будет применять для взаимосвязи Asterisk 16
и базы данных. По крайней мере так себе это пока представляю на плане, а как будет в реале уже будет в реалии. Плюс мне просто хочется разобрать поставленную задачу, как заметка на будущее.
Шаг №1:
Обновляю информацию об установленных пакетов и обновляю установленные пакеты до версии самых последних в текущем релизе Ubuntu 22.04 Server
из стандартных репозитариев:
ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2204a:~$ sudo nano /etc/update-manager/release-upgrades [DEFAULT] Prompt=never ekzorchik@srv-us2204a:~$ sudo nano /etc/apt/apt.conf.d/02proxy Acquire::http { Proxy "http://172.35.35.16:3142"; }; ekzorchik@srv-us2204a:~$ sudo apt-get update && sudo apt-get -y upgrade ekzorchik@srv-us2204a:~$ sudo reboot ekzorchik@srv-us2204a:~$ uname -a && lsb_release -a Linux srv-us2204a 5.15.0-37-generic #39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2204a:~$ sudo nano /etc/update-manager/release-upgrades [DEFAULT] Prompt=never ekzorchik@srv-us2204a:~$ sudo nano /etc/apt/apt.conf.d/02proxy Acquire::http { Proxy "http://172.35.35.16:3142"; }; ekzorchik@srv-us2204a:~$ sudo apt-get update && sudo apt-get -y upgrade ekzorchik@srv-us2204a:~$ sudo reboot ekzorchik@srv-us2204a:~$ uname -a && lsb_release -a Linux srv-us2204a 5.15.0-37-generic #39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy ekzorchik@srv-us2204a:~$
На заметку: IP
-адрес 172.35.35.16
– это виртуальная машина на моем сервере где работает сервис apt-cacher-ng
цель которого кэшировать устанавливаемые пакеты дабы после обращаться к нему, а не в интернет.
Шаг №2:
Проверяю наличие odbc
драйвера в дефолтных репозитариях Ubuntu 22.04 Server:
ekzorchik@srv-us2204a:~$ apt-cache search libmyodbc libreoffice-base-drivers - Database connectivity drivers for LibreOffice ekzorchik@srv-us2204a:~$
Увы, пакета нет.
Шаг №3:
Так как пакета/коннектора ODBC
нет в репозитариях, то буду устанавливать его скачиваю с официального сайта самую последнюю версию:
https://dev.mysql.com/downloads/connector/odbc/
Select Operating System: Linux - Generic
Select OS Version: выбираю Linux – Generic (glibc 2.12) (x86, 64-bit)
Получаю ссылку и скачиваю архив:
ekzorchik@srv-us2204a:~$ wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.29-linux-glibc2.12-x86-64bit.tar.gz ekzorchik@srv-us2204a:~$ tar zxf mysql-connector-odbc-8.0.29-linux-glibc2.12-x86-64bit.tar.gz ekzorchik@srv-us2204a:~$ mv mysql-connector-odbc-8.0.29-linux-glibc2.12-x86-64bit mysql-connector-odbc ekzorchik@srv-us2204a:~$ ls mysql-connector-odbc/lib/libmyodbc8w.so mysql-connector-odbc/lib/libmyodbc8w.so ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo mkdir -p /usr/lib/x86_64-linux-gnu/odbc ekzorchik@srv-us2204a:~$ sudo cp mysql-connector-odbc/lib/libmyodbc8* /usr/lib/x86_64-linux-gnu/odbc/
Шаг №4:
Устанавливаю Mysql
сервис:
ekzorchik@srv-us2204a:~$ sudo apt-get install -y libodbc1 odbcinst1debian2 unixodbc mysql-client mysql-server
Шаг №5:
Меняю схему авторизации в Mysql
на mysql_native_password:
ekzorchik@srv-us2204a:~$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] default-authentication-plugin=mysql_native_password
Шаг №6:
Перезапускаю MySQL
сервис:
ekzorchik@srv-us2204a:~$ sudo systemctl restart mysql && sudo systemctl status mysql | head -n5 ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-06-10 15:33:25 MSK; 14ms ago Process: 2232 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 2241 (mysqld) ekzorchik@srv-us2204a:~$
Шаг №7:
Задаю пароль на учетную запись root
сервиса MySQL
с учетом измененной схемы авторизации:
ekzorchik@srv-us2204a:~$ sudo mysql -u root -e "alter user 'root'@'localhost' identified with mysql_native_password by '712mbddr@';"
Шаг №8:
Инсталлирую драйвер ODBC:
ekzorchik@srv-us2204a:~$ sudo ./mysql-connector-odbc/bin/myodbc-installer -d -a -n "MySQL" -t "DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so;" Success: Usage count is 1 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo ./mysql-connector-odbc/bin/myodbc-installer -d -l MySQL ekzorchik@srv-us2204a:~$
Шаг №9:
Создаю DSN
к примеру, под именем test:
ekzorchik@srv-us2204a:~$ sudo mysql-connector-odbc/bin/myodbc-installer -s -a -c2 -n "test" -t "DRIVER=MySQL;SERVER=127.0.0.1;DATABASE=mysql;UID=root;PWD=712mbddr@" Success ekzorchik@srv-us2204a:~$
Шаг №10:
Проверяю какие экземпляры уже созданы:
ekzorchik@srv-us2204a:~$ odbcinst -l -s -q [test] <- это и есть созданный экземпляр DSN ekzorchik@srv-us2204a:~$ cat /etc/odbc.ini [test] Driver=MySQL SERVER=127.0.0.1 UID=root PWD=712mbddr@ DATABASE=mysql NO_SCHEMA=1 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo find / -name myodbc-installer /home/ekzorchik/mysql-connector-odbc/bin/myodbc-installer ekzorchik@srv-us2204a:~$ sudo cp mysql-connector-odbc/bin/myodbc-installer /bin/ ekzorchik@srv-us2204a:~$ myodbc-installer -s -l c2 -n "test" myodbc-installer: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory ekzorchik@srv-us2204a:~$
Устраняю ошибку с модулем:
ekzorchik@srv-us2204a:~$ ls /usr/lib/x86_64-linux-gnu | grep libssl libssl3.so libssl.so.3 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.3_amd64.deb ekzorchik@srv-us2204a:~$ sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.3_amd64.deb ekzorchik@srv-us2204a:~$ ls /usr/lib/x86_64-linux-gnu | grep libssl libssl3.so libssl.so.1.1 libssl.so.3 ekzorchik@srv-us2204a:~$
Повторяю, команду на подключение к экземпляру test:
ekzorchik@srv-us2204a:~$ myodbc-installer -s -l c2 -n "test" Name: test Driver: MySQL Server: 127.0.0.1 Uid: root Pwd: 712mbddr@ Database: mysql Options: NO_SCHEMA ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo isql test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> quit ekzorchik@srv-us2204a:~$
Подключение выполнено успешно.
Итого, я успешно разобрал как установить ODBC
драйвер для взаимодействия с MySQL
на Ubuntu 22.04 Server
, данная заметка пригодится мне, когда я буду задействовать этот драйвер в Asterisk
размещая записи CDR (Call Detail Records)
и CEL (Channel Event Logging)
в таблице MySQL.
На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.