Complete Connector/ODBC guide for MariaDB. Complete resource for installation, configuration, query execution, and integration with comprehensive examples.
Complete Connector/ODBC setup guide: Windows ODBC Administrator, odbcinst.ini/odbc.ini configuration, isql DSN testing, and DSN-less connection strings.
PASSWORD: password for database authentication. Aliases: PWD[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application.mkdir odbc_package
cd odbc_package
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.1.7/mariadb-connector-odbc-3.1.7-ga-rhel7-x86_64.tar.gz
tar -xvzf mariadb-connector-odbc-3.1.7-ga-rhel7-x86_64.tar.gz
sudo install lib64/libmaodbc.so /usr/lib64/
sudo install -d /usr/lib64/mariadb/
sudo install -d /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/auth_gssapi_client.so /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/caching_sha2_password.so /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/client_ed25519.so /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/dialog.so /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/mysql_clear_password.so /usr/lib64/mariadb/plugin/
sudo install lib64/mariadb/plugin/sha256_password.so /usr/lib64/mariadb/plugin/mkdir odbc_package
cd odbc_package
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.1.7/mariadb-connector-odbc-3.1.7-ga-debian-x86_64.tar.gz
tar -xvzf mariadb-connector-odbc-3.1.7-ga-debian-x86_64.tar.gz
sudo install lib64/libmaodbc.so /usr/lib/
sudo install -d /usr/lib/mariadb/
sudo install -d /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/auth_gssapi_client.so /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/caching_sha2_password.so /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/client_ed25519.so /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/dialog.so /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/mysql_clear_password.so /usr/lib/mariadb/plugin/
sudo install lib/mariadb/plugin/sha256_password.so /usr/lib/mariadb/plugin/sudo yum install unixODBCsudo apt-get update
sudo apt-get install unixodbc odbcinstsudo yum install unixODBC-develsudo apt-get update
sudo apt-get install unixodbc-devSQLWCHAR *ConnStr= L"Driver={MariaDB ODBC 3.2 Driver};SERVER=mydatabase.mydomain.com;USER=odbc_user;PASSWORD=odbc_pw;DATABASE=odbc_test;PORT=3306";[MariaDB-server]
Description = MariaDB server
Driver = MariaDB ODBC 3.2 Driver
Trace = Yes
TraceFile = /tmp/trace.log
SERVER = mydatabase.mydomain.com
USER = odbc_user
PASSWORD = odbc_pw
DATABASE = odbc_test
PORT = 3306SQLWCHAR *ConnStr= L"Driver={MariaDB ODBC 3.2 Driver};SERVER=mydatabase.mydomain.com;USER=odbc_user;PASSWORD=odbc_pw;DATABASE=odbc_test;PORT=3306;SSLCERT=/etc/my.cnf.d/certificates/client-cert.pem;SSLKEY=/etc/my.cnf.d/certificates/client-key.pem;SSLCA=/etc/my.cnf.d/certificates/ca.pem;SSLVERIFY=1";[MariaDB-server]
Description = MariaDB server
Driver = MariaDB ODBC 3.2 Driver
Trace = Yes
TraceFile = /tmp/trace.log
SERVER = mydatabase.mydomain.com
USER = odbc_user
PASSWORD = odbc_pw
DATABASE = odbc_test
PORT = 3306
SSLCERT = /etc/my.cnf.d/certificates/client-cert.pem
SSLKEY = /etc/my.cnf.d/certificates/client-key.pem
SSLCA = /etc/my.cnf.d/certificates/ca.pem
SSLVERIFY = 1SQLWCHAR *ConnStr= L"Driver={MariaDB ODBC 3.2 Driver};SERVER=mydatabase.mydomain.com;USER=odbc_user;PASSWORD=odbc_pw;DATABASE=odbc_test;PORT=3306;SSLCA=/etc/my.cnf.d/certificates/ca.pem;SSLVERIFY=1";[MariaDB-server]
Description = MariaDB server
Driver = MariaDB ODBC 3.2 Driver
Trace = Yes
TraceFile = /tmp/trace.log
SERVER = mydatabase.mydomain.com
USER = odbc_user
PASSWORD = odbc_pw
DATABASE = odbc_test
PORT = 3306
SSLCA = /etc/my.cnf.d/certificates/ca.pem
SSLVERIFY = 1SQLWCHAR *ConnStr= L"Driver={MariaDB ODBC 3.2 Driver};SERVER=mydatabase.mydomain.com;USER=odbc_user;PASSWORD=odbc_pw;DATABASE=odbc_test;PORT=3306;SSLCIPHER=DHE-RSA-AES256-GCM-SHA384";[MariaDB-server]
Description = MariaDB server
Driver = MariaDB ODBC 3.2 Driver
Trace = Yes
TraceFile = /tmp/trace.log
SERVER = mydatabase.mydomain.com
USER = odbc_user
PASSWORD = odbc_pw
DATABASE = odbc_test
PORT = 3306
SSLCIPHER = DHE-RSA-AES256-GCM-SHA384// If sqlmariadb.h included
// This makes Stmt to use server side prepared statement in SQLExecDirect
SQLSetStmtAttr(Stmt, SQL_ATTR_EXECDIRECT_ON_SERVER, (SQLPOINTER)SQL_TRUE, 0);
// This makes all statements created on Connection after this, to use client side prepared statement in
// SQLExecDirect, unless attribute is set to different value for that statement handle
SQLSetConnectAttr(Conn, SQL_ATTR_EXECDIRECT_ON_SERVER, (SQLPOINTER)SQL_FALSE, 0);
// If sqlmariadb.h is *not* included
// This makes Stmt to use client side prepared statement in SQLExecDirect
SQLSetStmtAttr(Stmt, SQL_ATTR_EXECDIRECT_ON_SERVER, (SQLPOINTER)SQL_FALSE, 0);
// This makes all statements created on Connection after this, to use server side prepared statement in
// SQLExecDirect, unless attribute is set to different value for that statement handle
SQLSetConnectAttr(Conn, SQL_ATTR_EXECDIRECT_ON_SERVER, (SQLPOINTER)SQL_TRUE, 0);SQLLEN attributeValue= -1;
// If sqlmariadb.h included
SQLGetStmtAttr(Stmt, SQL_ATTR_EXECDIRECT_ON_SERVER, &attributeValue, 0, NULL);
if (attributeValue == SQL_TRUE) {
// SQLExecDirect will prepare a query on the server and use binary protocol
}
SQLGetConnectAttr(Conn, SQL_ATTR_EXECDIRECT_ON_SERVER, &attributeValue, 0, NULL);
// If sqlmariadb.h is *not* included
SQLGetStmtAttr(Stmt, 25100, &attributeValue, 0, NULL);
if (attributeValue == SQL_FALSE) {
// SQLExecDirect will prepare a query on the client and use text protocol
}
SQLGetConnectAttr(Conn, 25100, &attributeValue, 0, NULL);// If sqlmariadb.h included
// This makes Stmt to use client side prepared statement in SQLPrepare
SQLSetStmtAttr(Stmt, SQL_ATTR_PREPARE_ON_CLIENT, (SQLPOINTER)SQL_TRUE, 0);
// This makes all statements created on Conn after this, to use server side prepared statement in
// SQLPrepare, unless attribute is set to different value for that statement handle
SQLSetConnectAttr(Conn, SQL_ATTR_PREPARE_ON_CLIENT, (SQLPOINTER)SQL_FALSE, 0);
// If sqlmariadb.h is *not* included
// This makes Stmt to use server side prepared statement in SQLPrepare
SQLSetStmtAttr(Stmt, 25101, (SQLPOINTER)SQL_FALSE, 0);
// This makes all statements created on Conn after this, to use client side prepared statement in
// SQLPrepare, unless attribute is set to different value for that statement handle
SQLSetConnectAttr(Conn, 25101, (SQLPOINTER)SQL_TRUE, 0);SQLLEN attributeValue= -1;
// If sqlmariadb.h included
SQLGetStmtAttr(Stmt, SQL_ATTR_PREPARE_ON_CLIENT, &attributeValue, 0, NULL);
if (attributeValue == SQL_TRUE) {
// SQLPrepare will prepare a query on the client side and use text protocol
}
SQLGetConnectAttr(Conn, SQL_ATTR_PREPARE_ON_CLIENT, &attributeValue, 0, NULL);
// If sqlmariadb.h is *not* included
SQLGetStmtAttr(Stmt, 25101, &attributeValue, 0, NULL);
if (attributeValue == SQL_FALSE) {
// SQLPrepare will prepare a query on the server side and use binary protocol
}
SQLGetConnectAttr(Conn, 25101, &attributeValue, 0, NULL);SQLPrepare(hstmt, "CREATE VIEW some_table_view AS SELECT * FROM some_table;SELECT * FROM some_table_view ", SQL_NTS);Authentication plugin 'dialog' cannot be loaded: The specified module could not be found.Authentication plugin 'mysql_clear_password' cannot be loaded: The specified module could not be found.sudo yum install git cmake make gcc openssl openssl-devel unixODBC unixODBC-develsudo apt-get update
sudo apt-get install git cmake make gcc libssl-dev unixodbc odbcinst unixodbc-devgit clone https://github.com/MariaDB/mariadb-connector-odbc.git
cd mariadb-connector-odbcgit checkout 3.0.8cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCONC_WITH_UNIT_TESTS=Off -DCONC_WITH_MSI=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .
cmake --build . --config RelWithDebInfomsiexec.exe /i wininstall\mariadb-connector-odbc-3.0.8-win32.msisudo make installcmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCONC_WITH_UNIT_TESTS=Off -DCMAKE_C_FLAGS_RELWITHDEBINFO="-I/usr/local/include/mariadb -L/usr/local/lib" .Create a data source with MariaDB Connector/ODBC on Windows using ODBC Data Source Administrator or on Linux by configuring UnixODBC with a driver entry and DSN for MariaDB Server.
[MariaDB ODBC 3.0 Driver]
Description = MariaDB Connector/ODBC v.3.0
Driver = /usr/lib64/libmaodbc.sosudo odbcinst -i -d -f MariaDB_odbc_driver_template.ini[MariaDB-server]
Description=MariaDB server
Driver=MariaDB ODBC 3.0 Driver
SERVER=<your server>
USER=<your user>
PASSWORD=<your password>
DATABASE=<your database>
PORT=<your port>sudo odbcinst -i -s -l -f MariaDB_odbc_data_source_template.iniodbcinst -i -s -h -f MariaDB_odbc_data_source_template.ini$ isql MariaDB-server+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> SELECT @@global.hostname;
+-------------------------------------------+
| @@global.hostname |
+-------------------------------------------+
| ip-172-30-0-249.us-west-2.compute.internal|
+-------------------------------------------+
SQLRowCount returns 1
1 rows fetched
SQL> quit[ODBC Drivers]
MariaDB ODBC 3.1 Driver = installed
[MariaDB ODBC 3.1 Driver]
Description=MariaDB Connector/ODBC v.3.1
Driver=/Library/MariaDB/MariaDB-Connector-ODBC/libmaodbc.dylib
Threading=0[ODBC]
Debug = 1
DebugFile = /tmp/odbc-debugfile.log
Trace = 0
TraceFile = /tmp/odbc-tracefile.log
TraceAutoStop = 1
[ODBC Data Sources]
MariaDB-server = MariaDB ODBC 3.1 Driver
[MariaDB-server]
Description = MariaDB server
Driver = /Library/MariaDB/MariaDB-Connector-ODBC/libmaodbc.dylib
SERVER=<your server>
USER=<your user>
PASSWORD=<your password>
DATABASE=<your database>
PORT=<your port>$ iodbctest "DSN=MariaDB-server"