Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DBD::MariaDB::INSTALL(User Contributed Perl DocumentatDBD::MariaDB::INSTALL(3)

       DBD::MariaDB::INSTALL - How to install and configure DBD::MariaDB

	 perl Makefile.PL [options]
	 make test
	 make install

       This document describes the installation	and configuration of
       DBD::MariaDB, the Perl DBI driver for the MariaDB and MySQL database.
       Before reading on, make sure that you have the prerequisites available:
       Perl, MariaDB/MySQL and DBI. For	details	see the	separate section

       Finally,	if you encounter any problems, do not forget to	read the
       section on known	problems "KNOWN	PROBLEMS". If that doesn't help, you
       should check the	section	on "SUPPORT".

	   Preferably a	version	of Perl, that comes preconfigured with your
	   system. For example,	all Linux and FreeBSD distributions come with
	   Perl. For Windows, use ActivePerl
	   <> or Strawberry Perl

	   You need not	install	the actual MariaDB or MySQL database server,
	   the client files and	the development	files are sufficient. They are
	   distributed either in Connector/C package or	as part	of server
	   package. You	need at	least MySQL version 4.1.8.

	   For example,	Fedora,	RedHat,	CentOS Linux distribution comes	with
	   RPM files (using YUM) "mariadb-devel", "mariadb-embedded-devel",
	   "mysql-devel" or "mysql-embedded-devel" (use	"yum search" to	find
	   exact package names). Debian	and Ubuntu comes with DEB packages
	   "libmariadb-dev", "libmariadbclient-dev", "libmariadbd-dev",
	   "libmysqlclient-dev"	or "libmysqld-dev" (use	"apt-cache search" to
	   find	exact package names).

	   In some cases MariaDB or MySQL libraries depends on external
	   libpcre, libaio, libnuma, libjemalloc or libwrap libraries. If it
	   is that case, they needs to be installed before MariaDB/MySQL

	   These are sufficient, if the	MariaDB/MySQL server is	located	on a
	   foreign machine. You	may also create	client files by	compiling from
	   the MariaDB/MySQL source distribution and using

	     ./configure --without-server



	   If you are using Windows and	need to	compile	from sources (which is
	   only	the case if you	are not	using ActivePerl or Strawberry Perl),
	   then	you must ensure	that the header	and library files are
	   installed. This may require choosing	a Custom installation and
	   selecting the appropriate option when running the MariaDB/MySQL
	   setup program.

       DBI DBD::MariaDB	is a DBI driver, hence you need	DBI. It	is available
	   from	the same source	where you got the DBD::MariaDB distribution

       C compiler
	   A C compiler	is required if you install from	source.	Make sure,
	   that	it is the same C compiler that was used	for compiling Perl and
	   MariaDB/MySQL! Otherwise you	will almost definitely encounter
	   problems because of differences in the underlying C runtime

	   In the worst	case, this might mean to compile Perl and
	   MariaDB/MySQL yourself.  But	believe	me, experience shows that a
	   lot of problems are fixed this way.

       Gzip libraries
	   Late	versions of MySQL and MariaDB come with	support	for
	   compression.	Thus it	may be required	that you have install an RPM
	   package like	"libz-devel", "libgz-devel" or something similar.

       So you need to install from sources? If you are lucky, the Perl module
       "CPAN" will do all for you, thanks to the excellent work	of Andreas
       KA<paragraph>nig. Otherwise you will need to do a manual	installation.
       All of these installation types have their own section: "CPAN
       installation", "Manual installation" and	"Configuration".

       The DBD::MariaDB	"Makefile.PL" needs to know where to find your MySQL
       installation. This may be achieved using	command	line switches (see
       "Configuration")	or automatically using the "mariadb_config" or
       "mysql_config" binary which comes with most MariaDB and MySQL
       distributions. If your MariaDB or MySQL distribution contains
       "mariadb_config"	or "mysql_config" the easiest method is	to ensure this
       binary is on your path.

       Typically, this is the case if you've installed the mysql library from
       your systems' package manager.


	 export	PATH

       As stated, to compile DBD::MariaDB you'll need a	C compiler. This
       should be the same compiler as the one used to build perl AND the
       MariaDB or MySQL	client libraries. If you're on linux, this is most
       typically the case and you need not worry. If you're on UNIX systems,
       you might want to pay attention.

       Also you'll need	to get the MariaDB or MySQL client and development
       headers on your system. The easiest is to get these from	your package

       To run the tests	that ship with the module, you'll need access to a
       running MariaDB or MySQL	server.	This can be running on localhost, but
       it can also be on a remote machine. You can use any server version
       which is	greater	or equal to 4.1.0. It does not have to be same as
       version of client library. Also you can use MariaDB client library and
       MySQL server or vice-versa.

       On Fedora the process is	as follows. In this example we install and
       start a local server for	running	the tests against.

	 yum -y	install	make gcc mariadb-devel mariadb-libs mariadb-server
	 yum -y	install	"perl(Test::Deep)" "perl(Test::More)"
	 systemctl start mariadb.service

   Environment Variables
       For ease	of use,	you can	set environment	variables for DBD::MariaDB
       installation. You can set any or	all of the options, and	export them by
       putting them in your .bashrc or the like:

	 export	DBD_MARIADB_CFLAGS=-I/usr/local/mysql/include/mysql
	 export	DBD_MARIADB_LIBS="-L/usr/local/mysql/lib/mysql -lmysqlclient"
	 export	DBD_MARIADB_CONFIG=mysql_config
	 export	DBD_MARIADB_TESTDB=test
	 export	DBD_MARIADB_TESTSOCKET=/var/run/mysqld/mysqld.sock

       The most	useful may be the host,	database, port,	socket,	user, and

       Installation will first look to your "mariadb_config", your
       "mysql_config", and then	your environment variables, and	then it	will
       guess with intelligent defaults.

   CPAN	installation
       Installation of DBD::MariaDB can	be incredibly easy:

	 cpan DBD::MariaDB

       Please note that	this will only work if the prerequisites are
       fulfilled, which	means you have a C-compiler installed, and you have
       the development headers and mariadb or mysql client libraries available
       on your system.

       If you are using	the CPAN module	for the	first time, just answer	the
       questions by accepting the defaults which are fine in most cases.

       If you cannot get the CPAN module working, you might try	manual
       installation. If	installation with CPAN fails because your local
       settings	have been guessed wrong, you need to ensure MariaDB's
       "mariadb_config"	or MySQL's "mysql_config" is on	your path (see "SOURCE
       INSTALLATION") or alternatively create a	script called "mysql_config".
       This is described in more details later.	 "Configuration".

   Manual installation
       For a manual installation you need to fetch the DBD::MariaDB source
       distribution. The latest	version	is always available from

       The name	is typically something like


       The archive needs to be extracted. On Windows you may use a tool	like
       7-zip, on *nix you type

	 tar xf	DBD-MariaDB-<version>.tar.gz

       This will create	a subdirectory DBD-MariaDB-_version_. Enter this
       subdirectory and	type

	 perl Makefile.PL
	 make test

       On Windows you may need to replace "make" with "dmake", "gmake" or
       "nmake".	 If the	tests seem to look fine, you may continue with

	 make install

       If the compilation (make) or tests fail,	you might need to configure
       some settings.

       For example you might choose a different	database, the C	compiler or
       the linker might	need some flags. "Configuration". "Compiler flags".
       "Linker flags".

       For Cygwin there	is a special section below. "Cygwin".

       The install script "Makefile.PL"	can be configured via a	lot of
       switches. All switches can be used on the command line. For example,
       the test	database:

	 perl Makefile.PL --testdb=<db>

       If you do not like configuring these switches on	the command line, you
       may alternatively create	a script called	"mariadb_config" or
       "mysql_config". This is described later on.

       Available switches are:

	   Name	of the test database, defaults to test.

	   Name	of the test user, defaults to empty. If	the name is empty,
	   then	the currently logged in	users name will	be used.

	   Password of the test	user, defaults to empty.

	   Host	name or	IP number of the test database;	defaults to localhost.

	   Port	number of the test database; ignored when testhost is set to

	   Unix	socket of the test database; takes effect only when testhost
	   is set to "localhost".

	   This	is a list of flags that	you want to give to the	C compiler.
	   The most important flag is the location of the MariaDB or MySQL
	   header files. For example, on Red Hat Linux the header files	are in
	   /usr/include/mysql and you might try


	   On Windows the header files may be in C:\mysql\include and you
	   might try


	   The default flags are determined by running

	     mysql_config --cflags

	   More	details	on the C compiler flags	can be found in	the following
	   section.  "Compiler flags".

	   This	is a list of flags that	you want to give to the	linker or
	   loader. The most important flags are	the locations and names	of
	   additional libraries. For example, on Red Hat Linux your MySQL
	   client libraries are	in /usr/lib/mysql and you might	try

	     -L/usr/lib/mysql -lmysqlclient -lz

	   On Windows the libraries may	be in C:\mysql\lib and

	     -LC:\mysql\lib -lmysqlclient

	   might be a good choice. The default flags are determined by running

	     mysql_config --libs

	   More	details	on the linker flags can	be found in a separate
	   section.  "Linker flags".

       If a switch is not present on the command line, then the	script
       "mariadb_config"	or "mysql_config" will be executed. This script	comes
       as part of the MariaDB or MySQL distribution. For example, to determine
       the C compiler flags, we	are executing

	 mysql_config --cflags
	 mysql_config --libs

       If you want to configure	your own settings for cflags or	libs, then you
       have to create a	script with same name that provides needed details.

   Compiler flags
       Note: the following info	about compiler and linker flags, you shouldn't
       have to use these options because "Makefile.PL" is pretty good at
       utilizing "mariadb_config" and "mysql_config" to	get the	flags that you
       need for	a successful compile.

       It is typically not so difficult	to determine the appropriate flags for
       the C compiler. The linker flags, which you find	in the next section,
       are another story.

       The determination of the	C compiler flags is usually left to a
       configuration script called "mysql_config", which can be	invoked	with

	 mysql_config --cflags

       When doing so, it will emit a line with suggested C compiler flags, for
       example like this:


       The C compiler must find	some header files. Header files	have the
       extension .h. MySQL header files	are, for example, mysql.h and
       mysql_version.h.	 In most cases the header files	are not	installed by
       default.	For example, on	Windows	it is an installation option of	the
       MySQL setup program (Custom installation), whether the header files are
       installed or not. On Red	Hat Linux, you need to install an RPM archive
       "mariadb-devel",	"mariadb-embedded-devel", "mysql-devel"	or

       If you know the location	of the header files, then you will need	to add
       an option

	 -L<header directory>

       to the C	compiler flags,	for example "-L/usr/include/mysql".

   Linker flags
       Appropriate linker flags	are the	most common source of problems while
       installing DBD::MariaDB.	I will only give a rough overview, you'll find
       more details in the troubleshooting section. "KNOWN PROBLEMS"

       The determination of the	C compiler flags is usually left to a
       configuration script called "mysql_config", which can be	invoked	with

	 mysql_config --libs

       When doing so, it will emit a line with suggested C compiler flags, for
       example like this:

	 -L'/usr/lib/mysql' -lmysqlclient -lnsl	-lm -lz	-lcrypt

       The following items typically need to be	configured for the linker:

       The mariadb/mysqlclient library
	   The MariaDB or MySQL	client library comes as	part of	the MariaDB or
	   MySQL distribution. Depending on your system	it may be a file

	     libmariadb.a	statically linked library, Unix	dynamically linked library, Unix
	     libmysqlclient.a	statically linked library, Unix	dynamically linked library, Unix
	     libmysqld.a	statically linked library with embedded	server,	Unix	dynamically linked library with	embedded server, Unix
	     libmariadbd.a	statically linked library with embedded	server,	Unix	dynamically linked library with	embedded server, Unix
	     mariadb.lib	statically linked library, Windows
	     libmariadb.lib	statically linked library, Windows
	     mariadbclient.lib	statically linked library, Windows
	     libmariadb.dll	dynamically linked library, Windows
	     mysqlclient.lib	statically linked library, Windows
	     mysqlclient.dll	dynamically linked library, Windows

	   or something	similar.

	   As in the case of the header	files, the client library is typically
	   not installed by default. On	Windows	you will need to select	them
	   while running the MySQL setup program (Custom installation).	On Red
	   Hat Linux an	RPM archive "mysql-devel" or "MySQL-devel" must	be

	   The linker needs to know the	location and name of the
	   mariadb/mysqlclient library.	This can be done by adding the flags

	     -L<lib directory> -lmysqlclient

	   or by adding	the complete path name.	Examples:

	     -L/usr/lib/mysql -lmysqlclient
	     -LC:\mysql\lib -lmysqlclient

	   If you would	like to	use the	static libraries, you need to create a
	   separate directory, copy the	static libraries to that place and use
	   the "-L" switch above to point to your new directory. For example:

	     mkdir /tmp/mysql-static
	     cp	/usr/lib/mysql/*.a /tmp/mysql-static
	     perl Makefile.PL --libs="-L/tmp/mysql-static -lmysqlclient"
	     make test
	     make install
	     rm	-rf /tmp/mysql-static

       The gzip	library
	   The MariaDB or MySQL	client can use compression when	talking	to the
	   MariaDB or MySQL server, a nice feature when	sending	or receiving
	   large texts over a slow network.

	   On Unix you typically find the appropriate file name	by running

	     ldconfig -p | grep	libz
	     ldconfig -p | grep	libgz

	   Once	you know the name (libz.a or libgz.a is	best), just add	it to
	   the list of linker flags. If	this seems to be causing problem you
	   may also try	to link	without	gzip libraries.

       The MariaDB native client is another option for connecting to a MySQL
       database	licensed LGPL 2.1. To build DBD::MariaDB against this client,
       you will	first need to build the	client.	Generally, this	is done	with
       the following:

	 cd path/to/src/mariadb-native-client
	 cmake -G "Unix	Makefiles'
	 sudo make install

       Once the	client is built	and installed, you can build DBD::MariaDB
       against it:

	 perl Makefile.PL --testuser=xxx --testpassword=xxx \
			  --testsocket=/path/to/mysqld.sock \
	 make test
	 make install

       Below you find information on particular	systems:

       For installing DBD::MariaDB you need to have the	libssl header files
       and the mysql client libs. The easiest way to install these is using
       Homebrew	(<>).

       Once you	have Homebrew set up, you can simply install the dependencies

	 brew install openssl mysql-connector-c

       Then you	can install DBD::MariaDB using your cpan client.

       If you are a user of Cygwin you already know, it	contains a nicely
       running perl 5.6.1, installation	of additional modules usually works
       like a charm via	the standard procedure of

	 perl makefile.PL
	 make test
	 make install

       The Windows binary distribution of MySQL	runs smoothly under Cygwin.
       You can start/stop the server and use all Windows clients without
       problem.	But to install DBD::MariaDB you	have to	take a little special

       Don't attempt to	build DBD::MariaDB against either the MySQL Windows or
       Linux/Unix distributions: neither will work!

       You MUST	compile	the MySQL clients yourself under Cygwin, to get	a
       libmysqlclient.a	compiled under Cygwin. Really! You'll only need	that
       library and the header files, you don't need any	other client parts.
       Continue	to use the Windows binaries. And don't attempt (currently) to
       build the MySQL Server part, it is unnecessary, as MySQL	AB does	an
       excellent job to	deliver	optimized binaries for the mainstream
       operating systems, and it is told, that the server compiled under
       Cygwin is unstable.

       Install a MySQL server for testing against. You can install the regular
       Windows MySQL server package on your Windows machine, or	you can	also
       test against a MySQL server on a	remote host.

       Build MySQL clients under Cygwin:

       Download	the MySQL LINUX	source from <>,
       unpack mysql-_version_.tar.gz into some tmp location and	from this
       directory run configure:

	 ./configure --prefix=/usr/local/mysql --without-server

       This prepares the Makefile with the installed Cygwin features. It takes
       some time, but should finish without error. The "--prefix", as given,
       installs	the whole Cygwin/MySQL thingy into a location not normally in
       your PATH, so that you continue to use already installed	Windows
       binaries. The "--without-server"	parameter tells	configure to only
       build the clients.


       This builds all MySQL client parts ... be patient. It should finish
       finally without any error.

	 make install

       This installs the compiled client files under /usr/local/mysql/.
       Remember, you don't need	anything except	the library under
       /usr/local/mysql/lib and	the headers under /usr/local/mysql/include!

       Essentially you are now done with this part. If you want, you may try
       your compiled binaries shortly; for that, do:

	 cd /usr/local/mysql/bin
	 ./mysql -h

       The host	("-h") parameter targets the local host, but forces
       the mysql client	to use a TCP/IP	connection. The	default	would be a
       pipe/socket connection (even if you say "-h localhost") and this
       doesn't work between Cygwin and Windows (as far as I know).

       If you have your	MySQL server running on	some other box,	then please
       substitute with the name or IP-number of that box.

       Please note, in my environment the "mysql" client did not accept	a
       simple RETURN, I	had to use CTRL-RETURN to send commands	... strange,
       but I didn't attempt to fix that, as we are only	interested in the
       built lib and headers.

       At the "mysql>" prompt do a quick check:

	 mysql>	use mysql
	 mysql>	show tables;
	 mysql>	select * from db;
	 mysql>	exit

       You are now ready to build DBD::MariaDB!

       compile DBD::MariaDB

       Download	and extract DBD-MariaDB-_version_.tar.gz from CPAN, "cd" into
       unpacked	dir DBD-MariaDB-_version_ you probably did that	already, if
       you are reading this!

	 cp /usr/local/mysql/bin/mysql_config .

       This copies the executable script mentioned in the DBD::MariaDB docs
       from your just built Cywin/MySQL	client directory; it knows about your
       Cygwin installation, especially about the right libraries to link with.

	 perl Makefile.PL --testhost=

       The "--testhost=" parameter again forces a TCP/IP connection
       to the MySQL server on the local	host instead of	a pipe/socket
       connection for the "make	test" phase.


       This should run without error

	 make test
	 make install

       This installs DBD::MariaDB into the Perl	hierarchy.

   no gzip on your system
       Some Linux distributions	don't come with	a gzip library by default.
       Running "make" terminates with an error message like

	 LD_RUN_PATH="/usr/lib/mysql:/lib:/usr/lib" gcc
	   -o blib/arch/auto/DBD/mysql/	 -shared
	   -L/usr/local/lib dbdimp.o mysql.o -L/usr/lib/mysql
	   -lmysqlclient -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96
	   -lgcc -lz
	 /usr/bin/ld: cannot find -lz
	 collect2: ld returned 1 exit status
	 make: *** [blib/arch/auto/DBD/mysql/] Error 1

       If this is the case for you, install an RPM archive like	"libz-devel",
       "libgz-devel", "zlib-devel" or "gzlib-devel" or something similar.

   different compiler for mysql	and perl
       If Perl was compiled with gcc or	egcs, but MySQL	was compiled with
       another compiler	or on another system, an error message like this is
       very likely when	running	"make test":

	 t/00base............install_driver(mysql) failed: Can't load
	 '../blib/arch/auto/DBD/mysql/'	for module DBD::MariaDB:
	 ../blib/arch/auto/DBD/mysql/ undefined symbol: _umoddi3
	 at /usr/local/perl-5.005/lib/5.005/i586-linux-thread/
	 line 168.

       This means, that	your linker doesn't include libgcc.a. You have the
       following options:

       The solution is telling the linker to use "libgcc". Run

	 gcc --print-libgcc-file

       to determine the	exact location of libgcc.a or for older	versions of

	 gcc -v

       to determine the	directory. If you know the directory, add a

	 -L<directory> -lgcc

       to the list of C	compiler flags.	"Configuration". "Linker flags".

       Finally,	if everything else fails, you are not alone. First of all, for
       an immediate answer, you	should look into the archives of the dbi-users
       mailing list, which is available	at Perl	DBI Users' Forum

       To subscribe to this list, send and email to
       "" <>.

       If you don't find an appropriate	posting	and reply in the mailing list,
       please post a question. Typically a reply will be seen within one or
       two days.

perl v5.32.0			  2019-02-27	      DBD::MariaDB::INSTALL(3)


Want to link to this manual page? Use this URL:

home | help