MariaDB-10.6.8

Introduction à MariaDB

MariaDB est un fork développé par la communauté et un remplaçant pour le système de gestion de bases de données relationnelles MySQL.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Informations sur le paquet

[Note]

Note

La taille installée de MariaDB est de 656 Mo, mais cela peut être réduit d'environ 259 Mo, si désiré, en effaçant le répertoire /usr/share/mysql/test après l'installation.

Téléchargements supplémentaires

Dépendances de MariaDB

Requises

CMake-3.23.3

Recommandées

Facultatives

Boost-1.79.0, libaio-0.3.113, libxml2-2.9.14, Linux-PAM-1.5.2, MIT Kerberos V5-1.20, pcre2-10.40, Ruby-3.1.2, unixODBC-2.3.11, Valgrind-3.19.0, Groonga, KyTea, Judy, lz4, MeCab, MessagePack, mruby, MyRocks, Snappy, Sphinx et ZeroMQ

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/mariadb

Installation de MariaDB

[Avertissement]

Avertissement

MariaDB et MySQL ne peuvent pas être installées sur le même système sans des modifications dans la configuration de la construction d'une des deux applications.

Pour des raisons de sécurité, lancer le serveur en tant qu'utilisateur et groupe sans privilèges est fortement encouragé. Tapez la suite (en tant que root) pour créer l'utilisateur et le groupe

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

Corrigez un problème d'écrasement de pile introduit par openssl-3 :

patch -Np1 -i ../mariadb-10.6.8-openssl3_fix-1.patch

Installez MariaDB en exécutant les commandes suivantes :

mkdir build &&
cd    build &&

cmake -DCMAKE_BUILD_TYPE=Release                      \
      -DCMAKE_INSTALL_PREFIX=/usr                     \
      -DINSTALL_DOCDIR=share/doc/mariadb-10.6.8       \
      -DINSTALL_DOCREADMEDIR=share/doc/mariadb-10.6.8 \
      -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                       \
      -DSKIP_TESTS=ON                                 \
      -DTOKUDB_OK=0                                   \
      .. &&
make

Pour tester les résultats lancez : make test. Un test, test-connect est connu pour échouer.

[Note]

Note

Vous pouvez lancer un ensemble plus complet de tests avec ce qui suit :

pushd mysql-test
./mtr --parallel <N> --mem --force
popd

Où N est le nombre de tests à lancer en parallèle. Un peu plus de 5400 tests sont lancés en environ 24 SBU avec N=4. Quelques tests peuvent échouer surtout à cause de problèmes de jeux de caractères.

Maintenant, en tant qu'utilisateur root :

make install

Explication des commandes

-DWITH_EMBEDDED_SERVER=ON : ce paramètre active la compilation de la bibliothèque serveur embarquée nécessaire pour certaines applications, comme Amarok.

-DWITH_EXTRA_CHARSETS=complex : Ce paramètre active le support pour les ensembles de caractères complexes.

-DKIP_TESTS=ON : Ce paramètre désactive les tests pour MariaDB Connect/C qui ne sont pas supportés sans paramètres supplémentaires.

-DWITHOUT_SERVER=ON : Utilisez cesparamètre si vous ne voulez pas le serveur et souhaitez construire le client uniquement.

[Note]

Note

Il y a de nombreuses options disponibles pour cmake. Vérifiez la sortie de cmake . -LH pour des options de personnalisation supplémentaires.

Configuration de MySQL

Fichiers de configuration

/etc/mysql/my.cnf et ~/.my.cnf

Informations sur la configuration

Créez un fichier /etc/mysql/my.cnf basique en utilisant la commande suivante en tant qu'utilisateur root :

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

# InnoDB tables are now used by default
innodb_data_home_dir = /srv/mysql
innodb_log_group_home_dir = /srv/mysql
# All the innodb_xxx values below are the default ones:
innodb_data_file_path = ibdata1:12M:autoextend
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 128M
innodb_log_file_size = 48M
innodb_log_buffer_size = 16M
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

Vous pouvez maintenant installer une base de données et changer le propriétaire en utilisateur et groupe sans privilèges (à faire en tant qu'utilisateur root) :

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

Les configurations suivantes demandent que le serveur MariaDB soit lancé. Démarrez le serveur en utilisant les commandes suivantes en tant qu'utilisateur root :

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

Une installation par défaut n'initialise pas un mot de passe pour l'administrateur, aussi utilisez la commande suivante en tant qu'utilisateur root pour l'initialiser.

mysqladmin -u root password

La configuration du serveur est maintenant terminée. Arrêtez le serveur en utilisant la commande suivante en tant qu'utilisateur root :

mysqladmin -p shutdown

Unité Systemd

Installez l'unité mysqld.service incluse dans le paquet blfs-systemd-units-20220720 en tant qu'utilisateur root pour démarrer le serveur MariaDB au démarrage du système.

make install-mysqld
[Note]

Note

Si vous avez une base de données existante et que cette installation des binaires n'était qu'une mise à jour vers une nouvelle version, vérifiez la documentation en amont pour la mise à jour. Vous devriez lancer :

mariadb-upgrade

Contenu

Programmes installés: aria_chk, aria_dump_log, aria_ftdump, aria_pack, aria_read_log, aria_s3_copy, galera_new_cluster, galera_recovery, innochecksum, mariabackup, mariadb, mariadbd, mariadb-access, mariadb-admin, mariadb-backup, mariadb-binlog, mariadb-check, mariadb-client-test, mariadb-client-test-embedded, mariadb-conv, mariadb-convert-table-format, mariadb-find-rows, mariadbd-multi, mariadbd-safe, mariadbd-safe-helper, mariadb-dump, mariadb-dumpslow, mariadb-embedded, mariadb-fix-extensions, mariadb-hotcopy, mariadb-import, mariadb-install-db, mariadb-ldb, mariadb-plugin, mariadb-secure-installation, mariadb-setpermission, mariadb-service-convert, mariadb-show, mariadb-slap, mariadb-test, mariadb-test-embedded, mariadb-tzinfo-to-sql, mariadb-upgrade, mariadb-waitpid, mariadb_config, mbstream, msql2mysql, my_print_defaults, myisamchk, myisam_ftdump, myisamlog, myisampack, mysql_config, mytop, perror, replace, resolve_stack_dump, resolveip, sst_dump, wsrep_sst_common, wsrep_sst_mariabackup, wsrep_sst_mysqldump et wsrep_sst_rsync
Bibliothèques installées: libmariadbclient.a, libmariadb.so, libmariadbd.so, libmysqlclient.a, libmysqlclient_r.a (liens symboliques vers libmariadbclient.a), libmysqld.{so,a}, libmysqlservices.a et plusieurs dans /usr/lib/mysql/plugin/
Répertoires installés: /etc/mysql, /usr/{include,lib,share}/mysql, /usr/share/groonga{-normalizer-mysql} et /usr/share/doc/mariadb-10.6.8

Descriptions courtes

Il y a plusieurs liens symboliques de mysql* vers leur contrepartie mariadb. Ils sont maintenus pour la compatibilité.

Les modules DBI de Perl doivent être installés pour que le support de certains programmes de MariaDB fonctionnent correctement.

Descriptions courtes

aria_chk

est utilisé pour vérifier, réparer, optimiser, trier et obtenir des informations sur les tables Aria

aria_dump_log

est un outil pour afficher le contenu des pages de log d'Aria

aria_ftdump

affiche les informations d'index en texte

aria_pack

est un outil pour générer des tables Aria compressées en lecture seule

aria_read_log

affiche le contenu des fichiers de log Aria

aria_s3_copy

copie une table aria vers et à partir de AWS S3

galera_new_cluster

amorce une nouvelle grappe Galera

galera_recovery

récupère les données d'une grappe galera

innochecksum

imprime les sommes de contrôle pour les fichiers InnoDB

mariabackup

est un outil de sauvegarde open source pour InnoDB et XtraDB

mariadb

est un simple shell SQL avec des possibilités d'édition de la ligne d'entrée

mariadbd

est le démon du serveur MySQL

mariadb-access

vérifie les privilèges d'accès pour le nom d'hôte, le nom d'utilisateur et les combinaisons de bases de données

mariadb-admin

est un client pour réaliser les opérations administratives

mariadb-binlog

lit les fichiers de log binaire

mariadb-check

réalise la maintenance des tables : il vérifie, répare, optimise ou analyse les tables

mariadb-client-test

est utilisé pour tester les API clients Mysql qui ne peuvent pas être testées en utilisant mysqltest et les langages de tests

mariadb-client-test-embedded

est un outil pour tester les API clientes des serveurs embarqués

mariadb-conv

converti les jeux de caractères pour les utiliser avec MariaDB

mariadb-convert-table-format

convertit les tables dans une base de données pour utiliser un moteur de stockage particulier

mariadbd-multi

est conçu pour gérer plusieurs processus mysqld qui écoutent sur différents sockets Unix et ports TCP/IP

mariadbd-safe

est la façon recommandée de démarrer un serveur mysqld sur Unix et NetWare

mariadb-dump

est un programme de sauvegarde

mariadb-dumpslow

analyse les fichiers de log de demandes lentes de MySQL et affiche un résumé de leurs contenus

mariadb-embedded

est un client MySQL lié statiquement à libmariadb

mariadb-find-rows

lit les fichiers contenant les états SQL et extrait les états qui correspondent à une expression régulière donnée ou qui contiennent des déclarations USE db_name ou SET

mariadb-fix-extensions

convertit les extensions des fichiers de table MyISAM (ou ISAM) en leurs formes canoniques

mariadb-hotcopy

verrouille la table, nettoie la table et ensuite effectue une copie de la base de données

mariadb-import

lit plusieurs de formats de données, et insert les données dans une base de données

mariadb-install-db

initialise les répertoires de données MySQL et crée les tables systèmes qui les contiennent, si elles n'existent pas

mariadb-ldb

est l'outil RocksDB

mariadb-plugin

est un utilitaire qui autorise les administrateurs MySQL à gérer les greffons serveurs MySQL chargés

mariadb-secure-installation

est un outil pour tester la sécurité de l'installation MySQL

mariadb-service-convert

génère une unité systemd basée sur les paramètres mariadb actuels

mariadb-setpermission

initialise les permissions dans les tables grant de MySQL

mariadb-show

montre la structure d'une base de données MariaDB

mariadb-slap

est un programme de diagnostic conçu pour émuler la charge d'un client pour un serveur MySQL et pour signaler les durées de chaque étape

mariadb-test

lance un cas de tests contre un serveur MySQL et éventuellement compare la sortie avec un fichier résultat

mariadb-test-embedded

est similaire à la commande mysqltest mais est construit avec le support libmysqld pour serveur embarqué

mariadb-tzinfo-to-sql

charge les tables de zone de temps dans les bases de données mysql

mariadb-upgrade

examine toutes les tables dans toutes les bases de données pour les incompatibilités avec les versions actuelles du serveur MySQL

mariadb-waitpid

signale à un processus de se terminer et attend que le processus soit terminé

mariadb_config

récupère les drapeaux du compilateur pour utiliser MariaDB Conector/C

mbstream

est un utilitaire pour envoyer des sauvegardes InnoDB et XTraDB sur un flux

msql2mysql

est un outil pour convertir les programmes mSQL à l'utilisation de MySQL

my_print_defaults

affiche les options des groupes d'options des fichiers d'options

myisam_ftdump

affiche les informations à propos des index FULLTEXT dans les tables MyISAM

myisamchk

obtient des informations à propos de vos tables de base de données ou les vérifie, les répare, ou les optimise

myisamlog

affiche le contenu des fichiers de log MyISAM

myisampack

est un outil pour compresser les tables MyISAM

mysql_config

vous fournit des informations utiles pour compiler vos clients MySQL et les connecter à MySQL

mytop

est un outil console pour surveiller les threads et les performances d'un serveur MySQL

perror

est un utilitaire qui affiche les descriptions pour les codes d'erreur du système ou du moteur d'enregistrement

replace

est une extension MariaDB/MySQL pour le SQL standard

resolve_stack_dump

résout une pile numérique en symboles

resolveip

est un utilitaire pour résoudre les adresses IP en noms d'hôte et vice-versa

sst_sump

affiche le contenu de fichiers sst (le format utilisé par RocksDB)

Last updated on