MySQL MariaDB version 10.0.10 Installation

 

I needed to test the new SkySQL server audit plug-in 1.1.7 on latest MariaDB 10.0.10
More info about that handy plug in you may find here : http://www.skysql.com/downloads/mariadb-audit-plugin
Take a moment to read the info, along with that nice blog : http://www.skysql.com/blogs/ralf-gebhardt/activating-auditing-mariadb-an…
Then I decided to test the CONNECT engine install as I have a friend who needs to import unknown DB data exported into XML.
And I was interested to import the Skype sqlite3 database into MySQL… 🙂
More about that MariaDB engine you may find here : https://mariadb.com/kb/en/connect/

So.
The test was done on CentOS 6.5 minimal install.
I will go step by step from the start.

1. Configure the MariaDB repository for CentOS 6.5, the best way to do it the the MariaDB repository configuration tool:
https://downloads.mariadb.org/mariadb/repositories/
Check the CentOS link, then choose the release, in my case CentOS 6 (64 bit), then the MariaDB version : 10.0
As a direct link :
https://downloads.mariadb.org/mariadb/repositories/#mirror=nucleus&distr…

In short: the content of the MariaDB.repo should be as follows:

cat /etc/yum.repos.d/MariaDB.repo 
# MariaDB 10.0 CentOS repository list - created 2014-05-05 10:31 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

1. Install the MariaDB 10.0.10:

root@centos-6.5-minimal:[Mon May 05 12:49:52][~]$ yum search Mariadb
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: sunsite.rediris.es
 * extras: sunsite.rediris.es
 * updates: sunsite.rediris.es
================================= N/S Matched: Mariadb ==============================
MariaDB-Galera-server.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-cassandra-engine.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-client.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-common.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-compat.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-connect-engine.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-devel.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-oqgraph-engine.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-server.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-shared.x86_64 : MariaDB: a very fast and robust SQL database server
MariaDB-test.x86_64 : MariaDB: a very fast and robust SQL database server

  Name and summary matches only, use "search all" for everything.

root@centos-6.5-minimal:[Mon May 05 12:51:17][~]$ yum install MariaDB-server MariaDB*engine MariaDB-client 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.atosworldline.com
 * extras: sunsite.rediris.es
 * updates: sunsite.rediris.es
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-cassandra-engine.x86_64 0:10.0.10-1.el6 will be installed
---> Package MariaDB-client.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: MariaDB-common for package: MariaDB-client-10.0.10-1.el6.x86_64
---> Package MariaDB-connect-engine.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: libodbc.so.2()(64bit) for package: MariaDB-connect-engine-10.0.10-1.el6.x86_64
---> Package MariaDB-oqgraph-engine.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: libJudy.so.1()(64bit) for package: MariaDB-oqgraph-engine-10.0.10-1.el6.x86_64
---> Package MariaDB-server.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: perl(DBI) for package: MariaDB-server-10.0.10-1.el6.x86_64
--> Running transaction check
---> Package MariaDB-common.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: MariaDB-compat for package: MariaDB-common-10.0.10-1.el6.x86_64
---> Package MariaDB-oqgraph-engine.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: libJudy.so.1()(64bit) for package: MariaDB-oqgraph-engine-10.0.10-1.el6.x86_64
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
---> Package unixODBC.x86_64 0:2.2.14-12.el6_3 will be installed
--> Processing Dependency: libltdl.so.7()(64bit) for package: unixODBC-2.2.14-12.el6_3.x86_64
--> Running transaction check
---> Package MariaDB-compat.x86_64 0:10.0.10-1.el6 will be obsoleting
---> Package MariaDB-oqgraph-engine.x86_64 0:10.0.10-1.el6 will be installed
--> Processing Dependency: libJudy.so.1()(64bit) for package: MariaDB-oqgraph-engine-10.0.10-1.el6.x86_64
---> Package libtool-ltdl.x86_64 0:2.2.6-15.5.el6 will be installed
---> Package mysql-libs.x86_64 0:5.1.73-3.el6_5 will be obsoleted
--> Finished Dependency Resolution
Error: Package: MariaDB-oqgraph-engine-10.0.10-1.el6.x86_64 (mariadb)
           Requires: libJudy.so.1()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

root@centos-6.5-minimal:[Mon May 05 12:53:42][~]$ yum whatprovides *libJudy
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.ircam.fr
 * extras: distrib-coffee.ipsl.jussieu.fr
 * updates: mir01.syntis.net
base/filelists_db                                                                                                                                                             | 5.9 MB     00:11     
extras/filelists_db                                                                                                                                                           |  11 kB     00:00     
mariadb/filelists_db                                                                                                                                                          |  56 kB     00:00     
updates/filelists_db                                                                                                                                                          | 1.7 MB     00:03     
No Matches found
root@centos-6.5-minimal:[Mon May 05 12:54:20][~]$

So, it seems the MariaDB-oqgraph-engine-10.0.10-1 needs the libJudy which is missing at CentOS minimal install defaut repos.
At https://mariadb.atlassian.net/browse/MDEV-5664 there is detailed explanation, in short you have to set the epel repo.
How to set the Epel CentOS 6.5 repo:

root@centos-6.5-minimal:[Mon May 05 13:01:59][/etc/yum.repos.d]$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
root@centos-6.5-minimal:[Mon May 05 13:02:14][/etc/yum.repos.d]$ rpm -Uvh epel-release-6-8.noarch.rpm
root@centos-6.5-minimal:[Mon May 05 13:02:29][/etc/yum.repos.d]$ yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                                                                                 |  25 kB     00:00     
 * base: sunsite.rediris.es
 * epel: ftp.cica.es
 * extras: ftp.rezopole.net
 * updates: centos.quelquesmots.fr
epel                                                                                                                                                                          | 4.4 kB     00:00     
epel/primary_db                                                                                                                                                               | 6.1 MB     00:09     
repo id                                                                     repo name                                                                                                          status
base                                                                        CentOS-6 - Base                                                                                                     6,367
epel                                                                        Extra Packages for Enterprise Linux 6 - x86_64                                                                     10,762
extras                                                                      CentOS-6 - Extras                                                                                                      14
mariadb                                                                     MariaDB                                                                                                                12
updates                                                                     CentOS-6 - Updates 

Now, install libJudy:

root@centos-6.5-minimal:[Mon May 05 13:05:44][/etc/yum.repos.d]$ yum install Judy

Then install the MariaDB server, client and the available engines:

root@centos-6.5-minimal:[Mon May 05 13:06:12][/etc/yum.repos.d]$ yum install MariaDB-server MariaDB*engine MariaDB-client 

Start the MariaDB 10.0.10 MySQL service, check the installed engines and the configured plug-ins directory:

root@centos-6.5-minimal:[Mon May 05 13:13:53][/etc/yum.repos.d]$ mysql 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")
root@centos-6.5-minimal:[Mon May 05 13:15:38][/etc/yum.repos.d]$ service mysql 
Usage: mysql  {start|stop|restart|reload|force-reload|status|configtest}  [ MySQL server options ]
root@centos-6.5-minimal:[Mon May 05 13:15:47][/etc/yum.repos.d]$ service mysql  status
 ERROR! MySQL is not running
root@centos-6.5-minimal:[Mon May 05 13:15:53][/etc/yum.repos.d]$ service mysql  start
Starting MySQL. SUCCESS! 
root@centos-6.5-minimal:[Mon May 05 13:16:06][/etc/yum.repos.d]$ mysql 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.0.10-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql root@centos-6.5-minimal:[Mon May  5 13:16:08 2014][(none)]> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
| OQGRAPH            | YES     | Open Query Graph Computation Engine (http://openquery.com/graph)           | NO           | NO   | NO         |
| CASSANDRA          | YES     | Cassandra storage engine                                                   | NO           | NO   | NO         |
| CONNECT            | YES     | Management of External Data (SQL/MED), including many file formats         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
13 rows in set (0.00 sec)

mysql root@centos-6.5-minimal:[Mon May  5 13:16:30 2014][(none)]> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.02 sec)

As you can see above, the OQGRAPH and CONNECT engines are available now.

So, how to test the CONNECT engine sqlite3 db handler?
First, take a look at https://mariadb.com/kb/en/connect-table-types-odbc-table-type-accessing-… page
In short, you need to setup the unixODBC driver for the CONNECT engine sqlite3 handler.

How to setup sqliute3 unixODBC driver on CentOS 6.5 minimal install:
1. Check the existing odbc setup :

root@centos-6.5-minimal:[Mon May 05 13:29:16][~]$ cat /etc/odbcinst.ini
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbc.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbc.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description	= ODBC for MySQL
Driver		= /usr/lib/libmyodbc5.so
Setup		= /usr/lib/libodbcmyS.so
Driver64	= /usr/lib64/libmyodbc5.so
Setup64		= /usr/lib64/libodbcmyS.so
FileUsage	= 1
root@centos-6.5-minimal:[Mon May 05 13:29:22][~]$ odbcinst -q -d
[PostgreSQL]
[MySQL]

It seems the sqlite3 unixODBC is missing:

root@centos-6.5-minimal:[Mon May 05 13:30:38][~]$ locate libsqlite
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
root@centos-6.5-minimal:[Mon May 05 13:32:46][~]$ yum search sqlite | grep -i odbc

We find nothing.

So the good old way /my preferred one/ to do it is to compile the sqlite3 unixODBC driver as explained at http://www.ch-werner.de/sqliteodbc/ :

root@centos-6.5-minimal:[Mon May 05 13:33:37][/opt/installs]$ wget http://www.ch-werner.de/sqliteodbc/sqliteodbc-0.996.tar.gz
root@centos-6.5-minimal:[Mon May 05 13:33:41][/opt/installs]$ tar xvf sqliteodbc-0.996.tar.gz
root@centos-6.5-minimal:[Mon May 05 13:33:50][/opt/installs]$ cd sqliteodbc-0.996
root@centos-6.5-minimal:[Mon May 05 13:34:22][/opt/installs/sqliteodbc-0.996]$ ./configure 
checking build system type... x86_64-redhat-linux-gnu
checking host system type... x86_64-redhat-linux-gnu
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

As expected, the minimal install of the CentOS 6.5 does not have the needed gcc make etc dev tools.
How to install the development environment:

root@centos-6.5-minimal:[Mon May 05 13:34:35][/opt/installs/sqliteodbc-0.996]$ yum groupinstall 'Development Tools'
..
...
Install     104 Package(s)

Total download size: 93 M
Installed size: 272 M
Is this ok [y/N]: y
Complete! 
root@centos-6.5-minimal:[Mon May 05 13:54:57][/opt/installs/sqliteodbc-0.996]$ ./configure 
.
..
checking for sqlite3_close_v2 in -lsqlite3... no
no
configure: WARNING: SQLite4 header file and source not found
configure: error: No usable SQLite header/library on this system

Here the issue is the missing sqlite3 devel headers. This can be fixed by installing the sqlite-devel package with yum:

root@centos-6.5-minimal:[Mon May 05 13:55:33][/opt/installs/sqliteodbc-0.996]$ yum install sqlite-devel
Installed:
  sqlite-devel.x86_64 0:3.6.20-1.el6                                                                                                                                                                 

Complete!
root@centos-6.5-minimal:[Mon May 05 13:56:53][/opt/installs/sqliteodbc-0.996]$ ./configure 
.
..
checking for ODBC headers and libraries... no
configure: error: ODBC header files and/or libraries not found

New issue : ODBC header files are missing. Again, fix that by installing unixODBC-devel package:

root@centos-6.5-minimal:[Mon May 05 13:57:11][/opt/installs/sqliteodbc-0.996]$ yum install unixODBC-devel
root@centos-6.5-minimal:[Mon May 05 13:58:11][/opt/installs/sqliteodbc-0.996]$ ./configure 
..
checking for gmtime_r... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating sqliteodbc.spec
config.status: creating debian/changelog
root@centos-6.5-minimal:[Mon May 05 13:58:29][/opt/installs/sqliteodbc-0.996]$ make -j3 

gcc -shared  .libs/sqlite3odbc.o  -lsqlite3 -ldl  -Wl,-soname -Wl,libsqlite3odbc-0.996.so -o .libs/libsqlite3odbc-0.996.so
(cd .libs && rm -f libsqlite3odbc.so && ln -s libsqlite3odbc-0.996.so libsqlite3odbc.so)
ar cru .libs/libsqlite3odbc.a  sqlite3odbc.o
ranlib .libs/libsqlite3odbc.a
creating libsqlite3odbc.la
(cd .libs && rm -f libsqlite3odbc.la && ln -s ../libsqlite3odbc.la libsqlite3odbc.la)
root@centos-6.5-minimal:[Mon May 05 13:59:24][/opt/installs/sqliteodbc-0.996]$ make -j3  install

Check the UnixUDBC recent setup:

root@centos-6.5-minimal:[Mon May 05 13:59:59][/opt/installs/sqliteodbc-0.996]$ odbcinst -q -d
[PostgreSQL]
[MySQL]

Add the SQLite driver:

root@centos-6.5-minimal:[Mon May 05 14:00:27][/opt/installs/sqliteodbc-0.996]$ nano /etc/odbcinst.ini
root@centos-6.5-minimal:[Mon May 05 14:00:53][/opt/installs/sqliteodbc-0.996]$  odbcinst -q -d
[PostgreSQL]
[MySQL]
[SQLite]
root@centos-6.5-minimal:[Mon May 05 14:01:52][/opt/installs/sqliteodbc-0.996]$ cat /etc/odbcinst.ini
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbc.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbc.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description	= ODBC for MySQL
Driver		= /usr/lib/libmyodbc5.so
Setup		= /usr/lib/libodbcmyS.so
Driver64	= /usr/lib64/libmyodbc5.so
Setup64		= /usr/lib64/libodbcmyS.so
FileUsage	= 1

# added for MySQL Connect engine 
[SQLite]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqliteodbc.so
Setup=/usr/local/lib/libsqliteodbc.so
Threading=2

Check the SELinux status:

root@centos-6.5-minimal:[Mon May 05 14:02:48][/opt/installs/sqliteodbc-0.996]$ sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
Keep in mind that at the moment SELinux is enabled!

Create a custom directory that will host the external db files handled by the MariaDB 10.0.10 CONNECT engine

root@centos-6.5-minimal:[Mon May 05 14:04:22][/var/lib/mysql]$ mkdir /var/lib/mysql.connnect.db
root@centos-6.5-minimal:[Mon May 05 14:04:45][/var/lib/mysql]$ chown -R mysql:mysql /var/lib/mysql.connnect.db
root@centos-6.5-minimal:[Mon May 05 14:44:01][/var/lib/mysql]$ cd /var/lib/mysql.connnect.db

Create the test sqlite3 database:

root@centos-6.5-minimal:[Mon May 05 14:44:01][/var/lib/mysql.connnect.db]$  sqlite3 maria-sqlite3.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE DEPARTMENT(
   ...>    ID INT PRIMARY KEY      NOT NULL,
   ...>    DEPT           CHAR(50) NOT NULL,
   ...>    EMP_ID         INT      NOT NULL
   ...> );
sqlite> 
sqlite> insert into DEPARTMENT (ID,DEPT,EMP_ID) values(1,'sales',1);
sqlite> insert into DEPARTMENT (ID,DEPT,EMP_ID) values(2,'sales',2);
sqlite> insert into DEPARTMENT (ID,DEPT,EMP_ID) values(3,'sales',3);
sqlite> insert into DEPARTMENT (ID,DEPT,EMP_ID) values(4,'marketing',4);
sqlite> insert into DEPARTMENT (ID,DEPT,EMP_ID) values(5,'marketing',5);
sqlite> . tables
DEPARTMENT
sqlite> select * from DEPARTMENT;
1|sales|1
2|sales|2
3|sales|3
4|marketing|4
5|marketing|5

Set the proper file permissions for that sqlite3 database:

root@centos-6.5-minimal:[Mon May 05 14:46:29][/var/lib/mysql.connnect.db]$ ls -lrth
total 4.0K
-rw-r--r--. 1 root root 3.0K May  5 14:45 maria-sqlite3.db
root@centos-6.5-minimal:[Mon May 05 14:46:31][/var/lib/mysql.connnect.db]$ chown -R mysql:mysql maria-sqlite3.db 
root@centos-6.5-minimal:[Mon May 05 14:46:42][/var/lib/mysql.connnect.db]$ ls -lrth
total 4.0K
-rw-r--r--. 1 mysql mysql 3.0K May  5 14:45 maria-sqlite3.db

Create the MariaDB 10.0.10 CONNECT engine table to handle that sqlite3 database:

root@centos-6.5-minimal:[Mon May 05 14:46:43][/var/lib/mysql.connnect.db]$ mysql 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql root@centos-6.5-minimal:[Mon May  5 14:47:26 2014][(none)]>  create database sqlite3;
Query OK, 1 row affected (0.01 sec)

mysql root@centos-6.5-minimal:[Mon May  5 14:47:28 2014][(none)]> use sqlite3;
Database changed
mysql root@centos-6.5-minimal:[Mon May  5 14:47:34 2014][sqlite3]> create table my_dept engine=CONNECT table_type=ODBC tabname='DEPARTMENT' Connection='Driver=SQLite;Database=/var/lib/mysql.connnect.db/maria-sqlite3.db;version=3;';
ERROR 1105 (HY000): [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libsqliteodbc.so' : file not found

Now, it seems we have non working setup of the UnixUDBC sqlite3 driver, the MariaDB 10.0.10 error is explanatory enough.
How to fix that:

root@centos-6.5-minimal:[Mon May 05 14:49:49][/var/lib/mysql.connnect.db]$ locate libsqlite | grep -i odbc | grep -v install
/usr/local/lib/libsqlite3odbc-0.996.so
/usr/local/lib/libsqlite3odbc.a
/usr/local/lib/libsqlite3odbc.la
/usr/local/lib/libsqlite3odbc.so

So it seems the name of the sqlite3 unixODBC file is not set right.
‘/usr/local/lib/libsqliteodbc.so’ is missing, ‘/usr/local/lib/libsqlite3odbc.so’ is available

 
root@centos-6.5-minimal:[Mon May 05 14:48:40][/var/lib/mysql.connnect.db]$ fgrep libsqliteodbc.so /etc/odbcinst.ini 
Driver=/usr/local/lib/libsqliteodbc.so
Setup=/usr/local/lib/libsqliteodbc.so

Change the /etc/odbcinst.ini configuration file:

root@centos-6.5-minimal:[Mon May 05 14:50:29][/var/lib/mysql.connnect.db]$ nano /etc/odbcinst.ini
root@centos-6.5-minimal:[Mon May 05 14:50:57][/var/lib/mysql.connnect.db]$  odbcinst -q -d
[PostgreSQL]
[MySQL]
[SQLite]
root@centos-6.5-minimal:[Mon May 05 14:51:06][/var/lib/mysql.connnect.db]$ cat /etc/odbcinst.ini
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbc.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbc.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description	= ODBC for MySQL
Driver		= /usr/lib/libmyodbc5.so
Setup		= /usr/lib/libodbcmyS.so
Driver64	= /usr/lib64/libmyodbc5.so
Setup64		= /usr/lib64/libodbcmyS.so
FileUsage	= 1

[SQLite]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqlite3odbc.so
Setup=/usr/local/lib/libsqlite3odbc.so
Threading=2

Reload the MariaDB 10.0.10 MySQL service:

root@centos-6.5-minimal:[Mon May 05 14:51:44][/var/lib/mysql.connnect.db]$ service mysql reload
 SUCCESS! Reloading service MySQL

Try to create again the sqlite3 CONNECT ENGINE table at MariaDB 10.0.10 MySQL:

mysql root@centos-6.5-minimal:[Mon May  5 14:52:16 2014][sqlite3]> create table my_dept engine=CONNECT table_type=ODBC tabname='DEPARTMENT' Connection='Driver=SQLite;Database=/var/lib/mysql.connnect.db/maria-sqlite3.db;version=3;';
ERROR 1105 (HY000): [unixODBC][SQLite]connect failed

ERROR again, this time a different one.
In general this is due to the SELinux restrictions on the mysql accessing other directories:
One work around is to put the sqlite3 db file at the mysql data directory, it will work.

Example:

root@centos-6.5-minimal:[Mon May 05 15:04:07][/var/lib/mysql.connnect.db]$ cp -p /var/lib/mysql.connnect.db/maria-sqlite3.db /var/lib/mysql/maria-sqlite3.db
mysql root@centos-6.5-minimal:[Mon May  5 15:04:24 2014][sqlite3]> create table my_dept engine=CONNECT table_type=ODBC tabname='DEPARTMENT' Connection='Driver=SQLite;Database=/var/lib/mysql/maria-sqlite3.db;version=3;';
Query OK, 0 rows affected (0.24 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:05:06 2014][sqlite3]> show create table my_dept \G
*************************** 1. row ***************************
       Table: my_dept
Create Table: CREATE TABLE `my_dept` (
  `ID` int(9) NOT NULL,
  `DEPT` varchar(50) NOT NULL,
  `EMP_ID` int(9) NOT NULL
) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='Driver=SQLite;Database=/var/lib/mysql/maria-sqlite3.db;version=3;' `TABLE_TYPE`='ODBC' `TABNAME`='DEPARTMENT'
1 row in set (0.01 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:07:35 2014][sqlite3]> select * from my_dept;
+----+-----------+--------+
| ID | DEPT      | EMP_ID |
+----+-----------+--------+
|  1 | sales     |      1 |
|  2 | sales     |      2 |
|  3 | sales     |      3 |
|  4 | marketing |      4 |
|  5 | marketing |      5 |
+----+-----------+--------+
5 rows in set (0.00 sec)

The other way is to disable the SELinux:
Example:

root@centos-6.5-minimal:[Mon May 05 15:07:51][/var/lib/mysql.connnect.db]$ echo 0 >/selinux/enforce

mysql root@centos-6.5-minimal:[Mon May  5 15:09:16 2014][sqlite3]> create table se_my_dept engine=CONNECT table_type=ODBC tabname='DEPARTMENT' Connection='Driver=SQLite;Database=/var/lib/mysql.connnect.db/maria-sqlite3.db;version=3;';
Query OK, 0 rows affected (0.18 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:09:27 2014][sqlite3]> insert into se_my_dept values(6,'dev',6);
Query OK, 1 row affected (0.18 sec)

Now you may access the sqlite3 db and to check the data for the inserted new row:

root@centos-6.5-minimal:[Mon May 05 15:16:18][/var/lib/mysql.connnect.db]$ sqlite3 maria-sqlite3.db 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
DEPARTMENT
sqlite> select * from DEPARTMENT;
1|sales|1
2|sales|2
3|sales|3
4|marketing|4
5|marketing|5
6|dev|6
So again, keep in mind the SELinux restrictions when you use the MariaDB CONNECT ENGINE with local db files.

Now, lets take a look at the MariaDB-Server-Audit plugin installation process:
http://www.skysql.com/blogs/ralf-gebhardt/activating-auditing-mariadb-an… has everything explained for you.
In short:

mysql root@centos-6.5-minimal:[Mon May  5 15:21:52 2014][sqlite3]> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.00 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:21:56 2014][sqlite3]> SELECT * from information_schema.plugins where plugin_name='server_audit';
+--------------+----------------+---------------+-------------+---------------------+-----------------+------------------------+---------------------------+----------------------------+----------------+-------------+-----------------+---------------------+
| PLUGIN_NAME  | PLUGIN_VERSION | PLUGIN_STATUS | PLUGIN_TYPE | PLUGIN_TYPE_VERSION | PLUGIN_LIBRARY  | PLUGIN_LIBRARY_VERSION | PLUGIN_AUTHOR             | PLUGIN_DESCRIPTION         | PLUGIN_LICENSE | LOAD_OPTION | PLUGIN_MATURITY | PLUGIN_AUTH_VERSION |
+--------------+----------------+---------------+-------------+---------------------+-----------------+------------------------+---------------------------+----------------------------+----------------+-------------+-----------------+---------------------+
| SERVER_AUDIT | 1.1            | ACTIVE        | AUDIT       | 3.2                 | server_audit.so | 1.8                    | Alexey Botchkov (MariaDB) | Audit the server activity. | GPL            | ON          | Beta            | 1.1.5               |
+--------------+----------------+---------------+-------------+---------------------+-----------------+------------------------+---------------------------+----------------------------+----------------+-------------+-----------------+---------------------+
1 row in set (0.01 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:22:13 2014][sqlite3]> SELECT * from information_schema.plugins where plugin_name='server_audit' \G
*************************** 1. row ***************************
           PLUGIN_NAME: SERVER_AUDIT
        PLUGIN_VERSION: 1.1
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: AUDIT
   PLUGIN_TYPE_VERSION: 3.2
        PLUGIN_LIBRARY: server_audit.so
PLUGIN_LIBRARY_VERSION: 1.8
         PLUGIN_AUTHOR: Alexey Botchkov (MariaDB)
    PLUGIN_DESCRIPTION: Audit the server activity.
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
       PLUGIN_MATURITY: Beta
   PLUGIN_AUTH_VERSION: 1.1.5
1 row in set (0.06 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:22:18 2014][sqlite3]> SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.01 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:22:42 2014][sqlite3]> SET GLOBAL server_audit_events='CONNECT,QUERY,TABLE';
Query OK, 0 rows affected (0.00 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:22:56 2014][sqlite3]> SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           | CONNECT,QUERY,TABLE   |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.00 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:22:58 2014][sqlite3]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.00 sec)

mysql root@centos-6.5-minimal:[Mon May  5 15:23:32 2014][sqlite3]> SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           | CONNECT,QUERY,TABLE   |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | ON                    |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.00 sec)

At the MariaDB 10.0.10 MySQL error log you see the audit plugin info:

root@centos-6.5-minimal:[Mon May 05 15:23:53][/var/lib/mysql.connnect.db]$ tail -f /var/lib/mysql/centos-6.5-minimal.err /var/lib/mysql/server_audit.log 
==> /var/lib/mysql/centos-6.5-minimal.err  /var/lib/mysql/server_audit.log

So, we want to upgrade to the latest MariaDB-Audit-Plugin which is 1.1.7:
Download location: https://downloads.skysql.com/enterprise/MariaDB-Audit-Plugin/
Install the plugin at the MariaDB MySQL plugins directory:

root@centos-6.5-minimal:[Mon May 05 15:15:55][/var/lib/mysql.connnect.db]$ cd /usr/lib64/mysql/plugin/
root@centos-6.5-minimal:[Mon May 05 15:19:56][/usr/lib64/mysql/plugin]$ wget https://downloads.skysql.com/enterprise/MariaDB-Audit-Plugin/server_audit-1.1.7/linux-64/server_audit.so 
--2014-05-05 15:20:05--  https://downloads.skysql.com/enterprise/MariaDB-Audit-Plugin/server_audit-1.1.7/linux-64/server_audit.so
Resolving downloads.skysql.com... 46.105.96.115, 2001:41d0:2:cf73::1
Connecting to downloads.skysql.com|46.105.96.115|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 166618 (163K) [application/octet-stream]
Saving to: “server_audit.so.1”

Note the name of the new file: “server_audit.so.1

root@centos-6.5-minimal:[Mon May 05 15:21:03][/usr/lib64/mysql/plugin]$ ls -lrth
total 64M
-rwxr-xr-x. 1 root root 5.4M Mar 30 23:37 ha_connect.so
-rwxr-xr-x. 1 root root 9.6M Mar 30 23:38 ha_cassandra.so
-rwxr-xr-x. 1 root root 2.6M Mar 30 23:38 ha_oqgraph.so
-rwxr-xr-x. 1 root root  20M Mar 30 23:41 ha_innodb.so
-rwxr-xr-x. 1 root root 6.2M Mar 30 23:43 ha_spider.so
-rwxr-xr-x. 1 root root  15M Mar 30 23:49 ha_tokudb.so
-rwxr-xr-x. 1 root root 253K Mar 30 23:54 ha_sequence.so
-rwxr-xr-x. 1 root root 819K Mar 30 23:54 ha_sphinx.so
-rwxr-xr-x. 1 root root  19K Mar 30 23:59 auth_pam.so
-rwxr-xr-x. 1 root root 159K Mar 30 23:59 locales.so
-rwxr-xr-x. 1 root root 2.6M Mar 30 23:59 handlersocket.so
-rwxr-xr-x. 1 root root 269K Mar 30 23:59 metadata_lock_info.so
-rwxr-xr-x. 1 root root 664K Mar 30 23:59 semisync_master.so
-rwxr-xr-x. 1 root root  20K Mar 30 23:59 sql_errlog.so
-rwxr-xr-x. 1 root root 562K Mar 30 23:59 semisync_slave.so
-rwxr-xr-x. 1 root root 206K Mar 30 23:59 server_audit.so
-rwxr-xr-x. 1 root root  13K Mar 31 00:00 auth_socket.so
-rwxr-xr-x. 1 root root 346K Mar 31 00:00 query_response_time.so
-rwxr-xr-x. 1 root root 273K Mar 31 00:00 query_cache_info.so
-rw-r--r--. 1 root root 163K Apr 17 09:44 server_audit.so.1

Uninstall the old plugin:

mysql root@centos-6.5-minimal:[Tue May  6 13:43:23 2014][(none)]> uninstall plugin server_audit;

At the error logs and the audit logs you will see messages like these ones:

20140506 13:43:23,centos-6.5-minimal,root,localhost,7,0,CONNECT,,,0
20140506 13:43:23,centos-6.5-minimal,root,localhost,7,32,QUERY,,'select @@version_comment limit 1',0
20140506 13:43:23,centos-6.5-minimal,root,localhost,7,33,QUERY,,'select USER()',0
20140506 13:43:28,centos-6.5-minimal,root,localhost,7,34,WRITE,mysql,plugin,
20140506 13:43:28,centos-6.5-minimal,root,localhost,7,34,QUERY,mysql,'uninstall plugin server_audit',0
==> /var/lib/mysql/centos-6.5-minimal.err

Now, replace the old one with the new server_audit.so.1 and reload the MariaDB 10.0.10 MySQL service:

root@centos-6.5-minimal:[Tue May 06 13:26:55][/usr/lib64/mysql/plugin]$ mv server_audit.so server_audit.so.1.1.5
root@centos-6.5-minimal:[Tue May 06 13:47:05][/usr/lib64/mysql/plugin]$ mv server_audit.so.1 server_audit.so
root@centos-6.5-minimal:[Tue May 06 13:47:12][/usr/lib64/mysql/plugin]$ service mysql reload
 SUCCESS! Reloading service MySQL

Install the server_audit plugin again:

mysql root@centos-6.5-minimal:[Tue May  6 13:44:09 2014][(none)]> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.01 sec)
mysql root@centos-6.5-minimal:[Tue May  6 13:48:17 2014][(none)]>  SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           |                       |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.00 sec)

You will see at the error log that the latest MariaDB 10.0.10 Audit Plugin version 1.1.7 was loaded :

==> /var/lib/mysql/centos-6.5-minimal.err  SET GLOBAL server_audit_events='CONNECT,QUERY,TABLE';
Query OK, 0 rows affected (0.00 sec)

mysql root@centos-6.5-minimal:[Tue May  6 13:51:56 2014][(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.00 sec)

mysql root@centos-6.5-minimal:[Tue May  6 13:52:07 2014][(none)]>  SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           | CONNECT,QUERY,TABLE   |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | ON                    |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.01 sec)

You will notice at the /var/lib/mysql/server_audit.log the new records:

==> /var/lib/mysql/centos-6.5-minimal.err  /var/lib/mysql/server_audit.log

So, that was the test, with MariaDB 10.0.10 and its CONNECT ENGINE audited by the MariaDB Audit Plugin version 1.1.7.

 

  • Ask Question