MariaDB-10.0.16

Introduction to MariaDB

MariaDB is a community-developed fork and a drop-in replacement for the MySQL relational database management system.

This package is known to build and work properly using an LFS-7.7 platform.

Package Information

[Note]

Note

The installed size of MariaDB is 388 MB, but this can be reduced by about 168 MB, if desired, by removing the /usr/share/mysql/test directory after installation.

MariaDB Dependencies

Required

CMake-3.1.3 and OpenSSL-1.0.2

Recommended

Optional

Boost-1.57.0, libxml2-2.9.2, Linux-PAM-1.1.8, LZO-2.09, PCRE-8.36, unixODBC-2.3.2, Valgrind-3.10.1, Groonga, KyTea, Judy, libaio, MeCab, MessagePack, mruby, Sphinx, TokuDB, and ZeroMQ

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mariadb

Installation of MariaDB

[Warning]

Warning

MariaDB and MySQL cannot be installed on the same system without extensive changes to the build configuration of one of the two applications.

For security reasons, running the server as an unprivileged user and group is strongly encouraged. Issue the following (as root) to create the user and group:

groupadd -g 40 mysql &&
useradd -c "MySQL Server" -d /srv/mysql -g mysql -s /bin/false -u 40 mysql

Install MariaDB by running the following commands:

sed -i "s@data/test@\${INSTALL_MYSQLTESTDIR}@g"        sql/CMakeLists.txt       &&
sed -i "s/srv_buf_size/srv_sort_buf_size/"      storage/innobase/row/row0log.cc &&

mkdir build &&
cd build    &&

cmake -DCMAKE_BUILD_TYPE=Release                       \
      -DCMAKE_INSTALL_PREFIX=/usr                      \
      -DINSTALL_DOCDIR=share/doc/mariadb-10.0.16       \
      -DINSTALL_DOCREADMEDIR=share/doc/mariadb-10.0.16 \
      -DINSTALL_MANDIR=share/man                       \
      -DINSTALL_MYSQLSHAREDIR=share/mysql              \
      -DINSTALL_MYSQLTESTDIR=share/mysql/test          \
      -DINSTALL_PLUGINDIR=lib/mysql/plugin             \
      -DINSTALL_SBINDIR=sbin                           \
      -DINSTALL_SCRIPTDIR=bin                          \
      -DINSTALL_SQLBENCHDIR=share/mysql/bench          \
      -DINSTALL_SUPPORTFILESDIR=share/mysql            \
      -DMYSQL_DATADIR=/srv/mysql                       \
      -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock        \
      -DWITH_EXTRA_CHARSETS=complex                    \
      -DWITH_EMBEDDED_SERVER=ON                        \
      -DTOKUDB_OK=0                                    \
      .. &&
make

To test the results, issue: make test.

Now, as the root user:

make install

Command Explanations

sed -i ...: First sed sets correct installation directory for some components. Second sed fixes a bug in the code.

-DWITH_EMBEDDED_SERVER=ON: This switch enables compiling the embedded server library needed by certain applications, such as Amarok..

-DWITH_EXTRA_CHARSETS=complex: This switch enables support for the complex character sets.

-DWITHOUT_SERVER=ON -DWITH_UNIT_TESTS=OFF: Use these switches if you don't want the server and would like to build the client only.

[Note]

Note

There are numerous options available to cmake. Check the output of the cmake . -LH for additional customization options.

Configuring MySQL

Config Files

/etc/mysql/my.cnf and ~/.my.cnf

Configuration Information

Create basic /etc/mysql/my.cnf using the following command as the root user:

install -v -dm 755 /etc/mysql &&
cat > /etc/mysql/my.cnf << "EOF"
# Begin /etc/mysql/my.cnf

# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /run/mysqld/mysqld.sock

# The MySQL server
[mysqld]
port            = 3306
socket          = /run/mysqld/mysqld.sock
datadir         = /srv/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 16K
myisam_sort_buffer_size = 8M

# Don't listen on a TCP/IP port at all.
skip-networking

# required unique id between 1 and 2^32 - 1
server-id       = 1

# Uncomment the following if you are using BDB tables
#bdb_cache_size = 4M
#bdb_max_lock = 10000

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /srv/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /srv/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

# End /etc/mysql/my.cnf
EOF

You can now install a database and change the ownership to the unprivileged user and group (perform as the root user):

mysql_install_db --basedir=/usr --datadir=/srv/mysql --user=mysql &&
chown -R mysql:mysql /srv/mysql

Further configuration requires that the MariaDB server is running. Start the server using the following commands as the root user:

install -v -m755 -o mysql -g mysql -d /run/mysqld &&
mysqld_safe --user=mysql 2>&1 >/dev/null &

A default installation does not set up a password for the administrator, so use the following command as the root user to set one.

mysqladmin -u root password

Configuration of the server is now finished. Shut the server down using the following command as the root user:

mysqladmin -p shutdown

Boot Script

Install the /etc/rc.d/init.d/mysql init script included in the blfs-bootscripts-20150304 package as the root user to start the MariaDB server during system boot-up.

make install-mysql

Contents

Installed Programs: aria_chk, aria_dump_log, aria_ftdump, aria_pack, aria_read_log, innochecksum, msql2mysql, my_print_defaults, myisam_ftdump, myisamchk, myisamlog, myisampack, mysql, mysql_client_test, mysql_client_test_embedded, mysql_config, mysql_convert_table_format, mysql_embedded, mysql_find_rows, mysql_fix_extensions, mysql_install_db, mysql_plugin, mysql_secure_installation, mysql_setpermission, mysql_tzinfo_to_sql, mysql_upgrade, mysql_waitpid, mysql_zap, mysqlaccess, mysqladmin, mysqlbinlog, mysqlbug, mysqlcheck, mysqld, mysqld_multi, mysqld_safe, mysqldump, mysqldumpslow, mysqlhotcopy, mysqlimport, mysqlshow, mysqlslap, mysqltest, mysqltest_embedded, mytop, perror, replace, resolve_stack_dump, and resolveip
Installed Libraries: libmysqlclient.{so,a}, libmysqlclient_r.{so,a} (symbolic links to libmysqlclient.{so,a}), libmysqld.{so,a}, libmysqlservices.a, and several under /usr/lib/mysql/plugin/
Installed Directories: /etc/mysql, /srv/mysql, /usr/include/mysql, /usr/lib/mysql, /usr/share/doc/mariadb-10.0.16, and /usr/share/mysql

Short Descriptions

Descriptions of all the programs and libraries would be several pages long. Instead, consult the man pages or the online documentation at https://mariadb.com/kb/en/mariadb-documentation/.

The Perl DBI modules must be installed for some of the MariaDB support programs to function properly.

Last updated on 2015-02-24 00:00:51 -0500