Version : 2022.01

Dernière mise-à-jour : 2022/11/10 07:09

SER801 - Présentation, Installation et Configuration

Contenu du Module

  • SER801 - Présentation, Installation et Configuration
    • Contenu du Module
    • Présentation de MySQL
      • Développement
      • Protocoles de Communication
      • Architecture
    • Présentation de MariaDB
      • Utilisation du Disque
      • Utilisation de la Mémoire
        • Allocation par Instance
        • Allocation par Threads
    • Installation
    • Démarrage du Serveur
      • Le service MariaDB
      • Invocation Directe
    • Arrêt du Serveur
      • Le service MariaDB
      • La Commande mysqladmin
    • Configuration
      • Le Client MySQL
        • Utilisation
        • Options
      • LAB #1 - Configuration de Base
      • LAB #2 - Configuration Avancée
        • Le fichier my.cnf
        • Passer des Paramètres à l'Exécutable mysqld
        • Paramétrer le Serveur Dynamiquement
          • SESSION
          • GLOBAL
      • LAB #3 - Le Mode SQL

Présentation de MySQL

MySQL comprend les outils suivants :

  • Un Serveur SQL
    • Un moteur qui permet d'accéder aux bases de données.
  • Les programmes clients pour accéder aux serveurs
    • Un programme interactif permet de saisir directement les requêtes et d'afficher les résultats
    • Plusieurs utilitaires et outils d'administration vous permettent de gérer votre site.
  • Une bibliothèque client pour écrire vos propres programmes
    • Les programmes clients peuvent être écrits en C, car la bibliothèque est elle-même écrite en C.
    • Elle intègre également toutes les bases nécessaires pour supporter d'autres langages.

Développement

Le développement de MySQL depuis son rachat par la société Oracle en 2009 produit des versions différentes selon le cycle suivant :

  • Création de une ou plusieurs versions successives dites DMR (Development Milestone Release) destinée(s) à être testée(s) par des personnes intéressées par des nouvelles fonctionnalités,
  • La sortie d'une ou de plusieurs versions successives dites RC (Release Candidate) qui sont des versions qui deviendront stables,
  • La sortie d'une version dite GA (Generally Available) qui correspond à la version stable actuelle.

Important - A noter que MySQL existe en version 32 bits et 64 bits.

MySQL existe en deux versions, la version communautaire qui est disponible sous la licence GNU GPL v2 et la version Enterprise qui :

  • bénéficie du support d'Oracle,
  • contient des outils tels Enterprise Monitor, Query Analyzer et Enterprise Backup.

Important - A noter qu'à un instant t, la version communautaire et la version Entreprise sont indentique.

Ce cours se concentre sur la version communautaire.

Protocoles de Communication

MySQL propose 4 protocoles de communication :

Protocole Connexion OS Commentaire
TCP Local et distant Unix, Windows Seul protocole de connexion à distance
Socket Unix Local Unix Protocole par défaut pour les connexions locales
Shared Memory Local Windows Zone de mémoire partagée entre le serveur et le client
Named Pipes Local Windows Fichier permettant deux processus sans lien de parenté de communiquer

Important - Le port TCP par défaut de MySQL est le 3306. Il est possible de changer le port de communication de MySQL en éditant le fichier my.cnf. Pour se connecter sur un serveur distant il convient d'utiliser la commande suivante mysql -u root -p -h nom_serveur - -protocol=tcp.

Architecture

L'architecture est la suivante :

  • Le serveur reçoit une requête du client,
  • Le serveur regarde dans le cache des requêtes, si activé,
  • Si la requête s'y trouve, le serveur renvoie le résultat du requête stocké dans le cache,
  • Si la requête ne s'y trouve pas, le serveur analyse et optimise la requête avant de l'exécuter en utilisant le moteur d’exécution des requêtes, le met dans le cache et retourne le résultat au client.

MariaDB

MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un fork communautaire de MySQL. La gouvernance du projet est assurée par la fondation MariaDB, et sa maintenance par la société Monty Program AB, créateur du projet.

En 2009, à la suite du rachat de MySQL par Sun Microsystems et des annonces du rachat de Sun Microsystems par Oracle Corporation, Michael Widenius, fondateur de MySQL, quitte la société afin de lancer le projet MariaDB.

Wikipédia annonce, fin 2012, la migration de MySQL à MariaDB8. En septembre 2013 Google annonce l'adoption de MariaDB et affecte un de ses ingénieurs à la Fondation MariaDB.

Un consortium baptisé Open Database Alliance a été créé pour assurer le développement du logiciel.

Utilisation du Disque

Les bases de données de MariaDB, aussi appelées Schémas sont représentées sur disque par un répertoire du même nom que la base de données.

Ce répertoire existe dans un répertoire de données appelé le datadir.

Pour connaître l'emplacement du datadir, il convient d'utiliser la commande suivante :

MariaDB [(none)]> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.001 sec)

MariaDB [(none)]> 

L’examen de ce répertoire montre la présence des répertoires des schémas :

[root@centos8 ~]# ls -l /var/lib/mysql
total 122936
-rw-rw----. 1 mysql mysql    16384 Nov  7 08:18 aria_log.00000001
-rw-rw----. 1 mysql mysql       52 Nov  7 08:18 aria_log_control
-rw-rw----. 1 mysql mysql      976 Nov  7 08:18 ib_buffer_pool
-rw-rw----. 1 mysql mysql 12582912 Nov  7 08:18 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Nov  7 08:19 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Nov  7 05:59 ib_logfile1
-rw-rw----. 1 mysql mysql 12582912 Nov  7 08:19 ibtmp1
-rw-rw----. 1 mysql mysql        0 Nov  7 06:02 multi-master.info
drwx------. 2 mysql mysql     4096 Nov  7 06:02 mysql
srwxrwxrwx. 1 mysql mysql        0 Nov  7 08:19 mysql.sock
-rw-rw----. 1 mysql mysql       16 Nov  7 06:02 mysql_upgrade_info
drwx------. 2 mysql mysql       20 Nov  7 06:02 performance_schema
-rw-rw----. 1 mysql mysql    24576 Nov  7 08:19 tc.log

Important - Il est possible de configurer MariaDB pour utiliser plusieurs supports différents pour stocker les journaux, fichiers temporaires, binaires etc.

Utilisation de la Mémoire

L'allocation de la mémoire est de deux types différentes :

Allocation par Instance

C'est la mémoire allouée par le serveur au démarrage de celui-ci. Elle est partagée par le serveur mariadb et les threads (connexions). Elle comprend, entre autre :

  • le key_buffer_size : le cache d'index des tables MyISAM,
  • le innodb_buffer_pool_size : le cache de données InnoDB,
  • le table_definition_cache et le table_open_cache : le cache des tables,
  • le query_cache : le cache des requêtes.

Allocation par Threads

C'est la mémoire allouée d'une manière dynamique en fonction des besoins de chaque client. Elle comprend, entre autre :

  • le sort_buffer_size : le buffer de tri,
  • le read_buffer_size : le buffer de lecture,
  • le tmp_table_size : l'espace mémoire des tables temporaires,
  • le max_heap_table_size : l'espace mémoire des tables Memory.

Installation

Pour installer MariaDB, utilisez dnf :

[root@centos8 ~]# dnf install mariadb mariadb-server -y

Important Vous pouvez également installer MariaDB à partir des sources disponibles sur le site https://downloads.mariadb.org/.

Démarrage du Serveur

Le serveur MariaDB peut être démarré par l'utilisation d'une de deux méthodes différentes.

Le Service MariaDB

Pour activer le service mariadb il convient d'utiliser la commande systemctl :

[root@centos8 ~]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Le démarrage se fait également avec systemctl :

[root@centos8 ~]# systemctl start mariadb
[root@centos8 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-11-07 13:21:28 CET; 34s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 19370 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 18390 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
  Process: 18366 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 18428 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 23535)
   Memory: 84.7M
   CGroup: /system.slice/mariadb.service
           └─18428 /usr/libexec/mysqld --basedir=/usr

Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]:     mysql> show tables;
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: Try 'mysqld --help' if you have problems with paths.  Using
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: --general-log gives you a log in /var/lib/mysql that may be helpful.
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: The latest information about mysql_install_db is available at
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: You can find the latest source at https://downloads.mariadb.org and
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: the maria-discuss email list at https://launchpad.net/~maria-discuss
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: Please check all of the above before submitting a bug report
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: at http://mariadb.org/jira
Nov 07 13:21:28 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database server.

Le service mariadb appel un script appelé mysqld_safe qui lance le serveur et crée un journal d'erreur. Il relance le serveur en cas d'arrêt intempestif.

Invocation Directe

Il est aussi possible d'invoquer directement le binaire mysqld en spécifiant manuellement le fichier de configuration de MariaDB, le fichier d'erreurs ainsi que le nom de l'utilisateur. Par exemple :

# /usr/libexec/mysqld --defaults-file=/chemin/my.cnf --log-error=/chemin/nom_log --user=mysql &

Arrêt du Serveur

Le Service MariaDB

Il est possible d'arrêter le service mariadb avec la commande stop :

[root@centos8 ~]# systemctl stop mariadb

[root@centos8 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: d>
   Active: inactive (dead) since Mon 2022-11-07 14:06:21 CET; 7s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 19370 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=>
  Process: 18428 ExecStart=/usr/libexec/mysqld --basedir=/usr $MYSQLD_OPTS $_WSREP_NE>
  Process: 18390 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code>
  Process: 18366 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/>
 Main PID: 18428 (code=exited, status=0/SUCCESS)
   Status: "MariaDB server is down"

Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: The latest inform>
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: https://mariadb.c>
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: You can find the >
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: the maria-discuss>
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: Please check all >
Nov 07 13:21:24 centos8.ittraining.loc mysql-prepare-db-dir[16116]: at http://mariadb>
Nov 07 13:21:28 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database serv>
Nov 07 14:06:19 centos8.ittraining.loc systemd[1]: Stopping MariaDB 10.3 database ser>
Nov 07 14:06:21 centos8.ittraining.loc systemd[1]: mariadb.service: Succeeded.
Nov 07 14:06:21 centos8.ittraining.loc systemd[1]: Stopped MariaDB 10.3 database serv>

[root@centos8 ~]# systemctl start mariadb

[root@centos8 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: d>
   Active: active (running) since Mon 2022-11-07 14:06:41 CET; 2s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 33977 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=>
  Process: 33906 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code>
  Process: 33881 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/>
 Main PID: 33945 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 23535)
   Memory: 72.2M
   CGroup: /system.slice/mariadb.service
           └─33945 /usr/libexec/mysqld --basedir=/usr

Nov 07 14:06:41 centos8.ittraining.loc mysql-prepare-db-dir[33906]: Database MariaDB >
Nov 07 14:06:41 centos8.ittraining.loc mysql-prepare-db-dir[33906]: If this is not th>
Nov 07 14:06:41 centos8.ittraining.loc mysqld[33945]: 2022-11-07 14:06:41 0 [Note] /u>
Nov 07 14:06:41 centos8.ittraining.loc mysql-check-upgrade[33977]: The datadir locate>
Nov 07 14:06:41 centos8.ittraining.loc mysql-check-upgrade[33977]:   1. Back-up your >
Nov 07 14:06:41 centos8.ittraining.loc mysql-check-upgrade[33977]:   2. Start the dat>
Nov 07 14:06:41 centos8.ittraining.loc mysql-check-upgrade[33977]:   3. Run 'mysql_up>
Nov 07 14:06:41 centos8.ittraining.loc mysql-check-upgrade[33977]: Read more about 'm>

La Commande mysqladmin

La comande mysqladmin peut aussi être utilisée pour arrêter le serveur à condition que l'utilisateur qui l'invoque possède le privilège shutdown. Par exemple :

[root@centos8 ~]# /bin/mysqladmin -uroot -p shutdown
Enter password: fenestros
[root@centos8 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: d>
   Active: inactive (dead) since Mon 2022-11-07 08:18:39 EST; 15s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 3197 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0>
  Process: 3165 ExecStart=/usr/libexec/mysqld --basedir=/usr $MYSQLD_OPTS $_WSREP_NEW>
  Process: 3127 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=>
  Process: 3098 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/S>
 Main PID: 3165 (code=exited, status=0/SUCCESS)
   Status: "MariaDB server is down"

Nov 07 08:17:18 centos8.ittraining.loc systemd[1]: Starting MariaDB 10.3 database ser>
Nov 07 08:17:18 centos8.ittraining.loc mysql-check-socket[3098]: Socket file /var/lib>
Nov 07 08:17:19 centos8.ittraining.loc mysql-check-socket[3098]: No process is using >
Nov 07 08:17:19 centos8.ittraining.loc mysql-prepare-db-dir[3127]: Database MariaDB i>
Nov 07 08:17:19 centos8.ittraining.loc mysql-prepare-db-dir[3127]: If this is not the>
Nov 07 08:17:19 centos8.ittraining.loc mysqld[3165]: 2022-11-07  8:17:19 0 [Note] /us>
Nov 07 08:17:21 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database serv>
Nov 07 08:18:39 centos8.ittraining.loc systemd[1]: mariadb.service: Succeeded.

Important - Le nom d'utilisateur peut être accoler ou non à l'option -u. Par exemple -uroot et -u root sont tous les deux correctes. Par contre, si vous souhaitez spécifier le mot de passe de l'utilisateur dans la ligne de commande, celui-ci doit être accoler à l'option -p.

Configuration

Votre première prise en mains de MariaDB doit débuter par la commande mysql :

Le Client MySQL

Utilisation

MariaDB dispose d’un outil client permettant de se connecter et d’envoyer des commandes SQL au serveur.

Pour démarrer une connexion au serveur MariaDB nous pouvons utiliser un C.L.I. sous Linux.

Les paramètres les plus courants sont :

$ mysql –u root –p Databasename [Entrée]

Où :

  • -u
    • donne le nom de l’utilisateur. Si vous renoncez à l’option –u , le nom de login sera utilisé sous Unix/Linux et le nom ODBC sous Windows.
  • -p
    • permet de saisir le mot de passe de MariaDB, cette option est obligatoire lorsque les utilisateurs MariaDB sont sécurisés, c’est-à-dire qu’ils ont un mot de passe.
  • -h
    • permet de préciser le nom de l’hôte qui héberge MariaDB. Par défaut le port de communication est 3306 il est possible de changer ce port soit en configurant l’instance MariaDB soit en configurant le fichier My.ini sous Windows™ ou my.cnf sous Unix/Linux. (Attention: vérifiez qu’un par feu ne bloque pas ce port). Enfin vous devez vous assurer que le serveur MariaDB est configuré de sorte à autoriser les accès depuis votre ordinateur local.
  • - -protocol = name
    • cette option permet de spécifier le protocole de communication à utiliser. Il est rarement nécessaire d’indiquer cette option, puisque MariaDB choisit le bon protocole par défaut. Lorsque le client mysql et le serveur MariaDB ne tournent pas sur le même ordinateur, le seul protocole réseau possible est le TCP, dans ce cas n’oubliez pas de préciser le paramètre –h.
  • -P n
    • permet de préciser le port de communication utilisée pour se connecter à MariaDB. Cette option est effective que lorsque la communication passe par TCP/IP.
  • - -default-character-set = nom
    • cette option indique le jeu de caractères utilisés dans le cadre de communication entre mysql et le serveur MariaDB. En théorie, il s’agit du même jeu de caractères que celui utilisé par défaut dans la vie de commandes sous Windows ou la console sous Linux. Les jeux de caractères pris en charge par MariaDB sont notamment Latin 1 (ISO-8559-1), latin 2 (ISO-8559-2), UTF-8 (unicode) et cp850 (le jeu de caractères DOS pour l’Europe occidentale).
  • Databasename
    • ce dernier paramètre indique à MariaDB le nom d’une base de données, ce qui permet de l’utiliser directement dès l’ouverture de MariaDB. Si vous désirez changer ici de base de données après sa connexion vous pouvez utiliser la commande SQL USE <NOM_DB>. Exemple : $ mysql -u root -p -h server –protocol=tcp [Entrée] $ Password : [Entrée]

Options

Dans la console MariaDB nous avons diverses options.

Abréviation Commande Signification
\c clear Annule une commande en cours de saisie
\h help Affiche la liste des commandes
\q exit ou quit Ferme la connexion à MariaDB. Sous Unix/Linux, il est possible utilisé le raccourci ctrl+D
\s status Affiche les informations de statut du serveur MariaDB
\T[f] tee[filename] Enregistre tous ce qui apparaît dans la fenêtre de commandes dans le fichier indiqué
L notee Ferme tee. Le protocole doit être repris à tout instant avec tee ou \T. Il n’est pas nécessaire de saisir de nouveau le nom de fichier.
\u db use database La base de données saisie devient la base de données par défaut
\. Fn source file name exécute les commandes SQL contenues dans le fichier spécifié. Les commandes doivent à séparer par des pointsvirgules.

NB : la fonction \c n’a aucun effet dans les chaînes de caractères( “” ou ' ').

Notez aussi que MariaDB se souvient des dernières commandes grâce aux touches flèche vers le haut et flèche vers le bas.

LAB #1 - Configuration de Base

Saisissez donc la commande mysql :

[root@centos8 ~]# systemctl start mariadb
[root@centos8 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>

pour visualiser la liste des bases de données par défaut :

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.035 sec)

MariaDB [(none)]> 

Ensuite changez de base de données avec la commande :

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> 

Afin de consulter les tables présentes dans la base, utilisez la commande :

MariaDB [mysql]> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.000 sec)

MariaDB [mysql]> 

Pour consulter une table spécifique, utilisez la commande DESCRIBE :

MariaDB [mysql]> DESCRIBE user;
+------------------------+-----------------------------------+------+-----+----------+-------+
| Field                  | Type                              | Null | Key | Default  | Extra |
+------------------------+-----------------------------------+------+-----+----------+-------+
| Host                   | char(60)                          | NO   | PRI |          |       |
| User                   | char(80)                          | NO   | PRI |          |       |
| Password               | char(41)                          | NO   |     |          |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N        |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N        |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N        |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N        |       |
| File_priv              | enum('N','Y')                     | NO   |     | N        |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N        |       |
| References_priv        | enum('N','Y')                     | NO   |     | N        |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N        |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N        |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N        |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N        |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N        |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N        |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N        |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N        |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N        |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N        |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N        |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N        |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N        |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N        |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N        |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N        |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N        |       |
| Delete_history_priv    | enum('N','Y')                     | NO   |     | N        |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |          |       |
| ssl_cipher             | blob                              | NO   |     | NULL     |       |
| x509_issuer            | blob                              | NO   |     | NULL     |       |
| x509_subject           | blob                              | NO   |     | NULL     |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0        |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0        |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0        |       |
| max_user_connections   | int(11)                           | NO   |     | 0        |       |
| plugin                 | char(64)                          | NO   |     |          |       |
| authentication_string  | text                              | NO   |     | NULL     |       |
| password_expired       | enum('N','Y')                     | NO   |     | N        |       |
| is_role                | enum('N','Y')                     | NO   |     | N        |       |
| default_role           | char(80)                          | NO   |     |          |       |
| max_statement_time     | decimal(12,6)                     | NO   |     | 0.000000 |       |
+------------------------+-----------------------------------+------+-----+----------+-------+
47 rows in set (0.001 sec)

MariaDB [mysql]> 

Pour visualiser la liste des utilisateurs autorisés pour MariaDB, utilisez la commande suivante :

MariaDB [mysql]> SELECT host, user, password FROM user;
+------------------------+-------+-----------+
| host                   | user  | password  |
+------------------------+-------+-----------+
| localhost              | root  |           |
| centos8.ittraining.loc | root  |           |
| 127.0.0.1              | root  |           |
| ::1                    | root  |           |
+------------------------+-------+-----------+
7 rows in set (0.00 sec)

MariaDB [mysql]>  

Vous noterez que l'utilisateur root, l'administrateur de MariaDB, n'a pas de mot de passe !

Il faut par conséquence en définir un en urgence !

Pour sortir de l'administration de MariaDB, utilisez la commande exit :

MariaDB [mysql]> exit
Bye
[root@centos8 ~]# 

Pour définir le mot de passe fenestros pour root, il convient de saisir la commande suivante :

[root@centos8 ~]# mysqladmin -u root password fenestros

Lors de la prochaine tentative de connexion, vous obtiendrez un message d'erreur car le mot de passe est maintenant non-null :

[root@centos8 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Pour vous connecter en tant que l'administrateur de la base il faut maintenant utiliser la commande suivante :

[root@centos8 ~]# mysql -uroot -p
Enter password: fenestros
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>

Important - Notez l'utilisation de l'option -p qui indique à MariaDB que vous souhaitez saisir un mot de passe. Le mot de passe n'est pas mysql mais fenestros, comme démontre l'exemple ci-dessus. Bien entendu le mot de passe fenestros n'apparaît pas réellement en clair. L'utilisation de l'option mysql dans la ligne de commande indique simplement que nous souhaitons se connecter à la base mysql dès la connexion.

Saisissez la commande suivante pour vérifier la table des utilisateurs :

MariaDB [mysql]> SELECT host, user, password FROM user;
+------------------------+------+-------------------------------------------+
| host                   | user | password                                  |
+------------------------+------+-------------------------------------------+
| localhost              | root | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A |
| centos8.ittraining.loc | root |                                           |
| 127.0.0.1              | root |                                           |
| ::1                    | root |                                           |
+------------------------+------+-------------------------------------------+
4 rows in set (0.000 sec)

MariaDB [mysql]>

Important - Notez que non seulement le mot de passe de root est présent mais qu'il a été crypté. Vous avez aussi la possibilité de sécuriser votre installation de MariaDB en utilisant le script /usr/bin/mysql_secure_installation.

LAB #2 - Configuration Avancée

La configuration avancée du serveur MariaDB se fait soit :

  • en éditant le fichier /etc/my.cnf,
  • en passant des paramètres à l'exécutable mysqld,
  • en paramétrant le serveur dynamiquement.

Le fichier my.cnf

[root@centos8 ~]# cat /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Ce fichier n'est pas cependant le seul endroit où est configuré le serveur. En effet, le serveur lit des directives des fichiers /etc/my.cnf et ~/.my.cnf dans l'ordre, comme démontre la sortie de la commande /usr/libexec/mysqld - -help - -verbose :

[root@centos8 ~]# /usr/libexec/mysqld --help --verbose | grep my.cnf
2022-11-07  8:28:24 0 [Note] Plugin 'FEEDBACK' is disabled.
/etc/my.cnf ~/.my.cnf 
                      my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
                      my.cnf files

Important : En cas de duplicité de directives, c'est la dernière lue qui l'emporte. Si vous avez un autre fichier de configuration qui n'est pas un de ceux mentionné, vous pouvez l'utiliser ainsi : /usr/libexec/mysqld –defaults-file=/chemin/votre_fichier.

Le fichier my.cnf est organisé en sections, aussi appelées des groupes. Ces sections font référence au programme concerné par la configuration. Par exemple la section [mysqld] fait référence au serveur, tandis qu'une section [mysql] ferait référence au client en mode texte. Il est aussi possible de trouver les sections suivantes :

  • [mysqldump],
  • [mysqladmin],
  • [mysqlhotcopy],
  • [myisamchk],
  • [client],
  • etc.

Important - [client] est une section qui configure tous les clients. [mysqld] peut être remplacé par [server]. Toute ligne commençant par le caractère # ou ; est un commentaire.

Le fichier de configuration peut aussi contenir des lignes !include qui référencent des fichiers tiers de configuration ainsi que des lignes !includedir qui référencent des répertoires contenant plusieurs fichiers de configuration. Attention, dans ce dernier cas, l'administrateur n'a aucun contrôle sur l'ordre de lecture des fichiers par le serveur :

[root@centos8 ~]# ls -l /etc/my.cnf.d
total 20
-rw-r--r--. 1 root root   41 Apr 19  2021 auth_gssapi.cnf
-rw-r--r--. 1 root root  295 Dec 17  2020 client.cnf
-rw-r--r--. 1 root root  763 Feb 18  2021 enable_encryption.preset
-rw-r--r--. 1 root root 1458 Apr 19  2021 mariadb-server.cnf
-rw-r--r--. 1 root root  232 Feb 18  2021 mysql-clients.cnf
[root@centos8 ~]# cat /etc/my.cnf.d/client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#


[client]

# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]

[root@centos8 ~]# cat /etc/my.cnf.d/mysql-clients.cnf
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#

[mysql]

[mysql_upgrade]

[mysqladmin]

[mysqlbinlog]

[mysqlcheck]

[mysqldump]

[mysqlimport]

[mysqlshow]

[mysqlslap]

[root@centos8 ~]# cat /etc/my.cnf.d/mariadb-server.cnf 
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld/mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid


#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

# this is only for embedded server
[embedded]

# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

# This group is only read by MariaDB-10.3 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.3]

Chaque section contient des directives au format option=valeur ou au format binaire, par exemple enable-federated.

Pour connaître toutes les options valides pour le serveur, il convient de saisir la commande suivante :

[root@centos8 ~]# /usr/libexec/mysqld --help --verbose | more
2022-11-07  8:36:15 0 [Note] Plugin 'FEEDBACK' is disabled.
/usr/libexec/mysqld  Ver 10.3.28-MariaDB for Linux on x86_64 (MariaDB Server)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Starts the MariaDB database server.

Usage: /usr/libexec/mysqld [OPTIONS]

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf 
The following groups are read: mysqld server mysqld-10.3 mariadb mariadb-10.3 client-server galera
The following options may be given as the first argument:
--print-defaults          Print the program argument list and exit.
--no-defaults             Don't read default options from any option file.
The following specify which files/extra groups are read (specified before remaining options):
--defaults-file=#         Only read default options from the given file #.
--defaults-extra-file=#   Read this file after the global files are read.
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.

  --allow-suspicious-udfs 
                      Allows use of UDFs consisting of only one symbol xxx()
                      without corresponding xxx_init() or xxx_deinit(). That
                      also means that one can load any function from any
                      library, for example exit() from libc.so
  --alter-algorithm[=name] 
                      Specify the alter table algorithm. One of: DEFAULT, COPY,
                      INPLACE, NOCOPY, INSTANT
  -a, --ansi          Use ANSI SQL syntax instead of MySQL syntax. This mode
                      will also set transaction isolation level 'serializable'.
  --archive[=name]    Enable or disable ARCHIVE plugin. One of: ON, OFF, FORCE
                      (don't start if the plugin fails to load),
                      FORCE_PLUS_PERMANENT (like FORCE, but the plugin can not
                      be uninstalled).
  --aria[=name]       Enable or disable Aria plugin. One of: ON, OFF, FORCE
                      (don't start if the plugin fails to load),
                      FORCE_PLUS_PERMANENT (like FORCE, but the plugin can not
                      be uninstalled).
  --aria-block-size=# Block size to be used for Aria index pages.
  --aria-checkpoint-interval=# 
                      Interval between tries to do an automatic checkpoints. In
                      seconds; 0 means 'no automatic checkpoints' which makes
                      sense only for testing.
  --aria-checkpoint-log-activity=# 
                      Number of bytes that the transaction log has to grow
                      between checkpoints before a new checkpoint is written to
                      the log.
  --aria-encrypt-tables 
                      Encrypt tables (only for tables with ROW_FORMAT=PAGE
                      (default) and not FIXED/DYNAMIC)
  --aria-force-start-after-recovery-failures=# 
                      Number of consecutive log recovery failures after which
                      logs will be automatically deleted to cure the problem; 0
                      (the default) disables the feature.
  --aria-group-commit=name 
                      Specifies Aria group commit mode. Possible values are
                      "none" (no group commit), "hard" (with waiting to actual
                      commit), "soft" (no wait for commit (DANGEROUS!!!))
  --aria-group-commit-interval=# 
                      Interval between commite in microseconds (1/1000000c). 0
--More--

Pour connaître les options valides pour le client mysql, l'option de la ligne de commande –verbose n'est pas requise :

[root@centos8 ~]# mysql --help | more
mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Usage: mysql [OPTIONS] [database]

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf 
The following groups are read: mysql client client-server client-mariadb
The following options may be given as the first argument:
--print-defaults          Print the program argument list and exit.
--no-defaults             Don't read default options from any option file.
The following specify which files/extra groups are read (specified before remaining options):
--defaults-file=#         Only read default options from the given file #.
--defaults-extra-file=#   Read this file after the global files are read.
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.

  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --abort-source-on-error 
                      Abort 'source filename' operations in case of errors
  --auto-rehash       Enable automatic rehashing. One doesn't need to use
                      'rehash' to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
                      (Defaults to on; use --skip-auto-rehash to disable.)
  -A, --no-auto-rehash 
                      No automatic rehashing. One has to use 'rehash' to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect.
  --auto-vertical-output 
                      Automatically switch to vertical output mode if the
                      result is wider than the terminal width.
  -B, --batch         Don't use history file. Disable interactive behavior.
                      (Enables --silent.)
  --binary-as-hex     Print binary data as hex
  --character-sets-dir=name 
                      Directory for character set files.
  --column-type-info  Display column type information.
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --skip-comments (discard comments), enable
                      with --comments.
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit.
  --debug-check       Check memory and open file usage at exit.
  -T, --debug-info    Print some debug info at exit.
  -D, --database=name Database to use.
  --default-character-set=name 
                      Set the default character set.
  --delimiter=name    Delimiter to be used.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file.)
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an SQL error. Sets
                      abort-source-on-error to 0
  -G, --named-commands 
                      Enable named commands. Named commands mean this program's
                      internal commands; see mysql> help . When enabled, the
                      named commands can be used from any line of the query,
--More--

Pour connaître avec exactitude la configuration actuelle utilisez la commande mysqladmin :

[root@centos8 ~]# mysqladmin -uroot -p variables | more
Enter password: fenestros
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------+
| Variable_name                                          | Value                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------+
| alter_algorithm                                        | DEFAULT                                                                                                                                                
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_block_size                                        | 8192                                                                                                                                                   
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_checkpoint_interval                               | 30                                                                                                                                                     
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_checkpoint_log_activity                           | 1048576                                                                                                                                                
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_encrypt_tables                                    | OFF                                                                                                                                                    
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_force_start_after_recovery_failures               | 0                                                                                                                                                      
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_group_commit                                      | none                                                                                                                                                   
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_group_commit_interval                             | 0                                                                                                                                                      
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_log_file_size                                     | 1073741824                                                                                                                                             
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_log_purge_type                                    | immediate                                                                                                                                              
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_max_sort_file_size                                | 9223372036853727232                                                                                                                                    
                                                                                                                                                                                                                  
                                                                                                                                                                                                                  
                                                                                                                           |
| aria_page_checksum                                     | ON                                                                                                                                                     
                                                                                                                                                                                                                  
--More--

Passer des Paramètres à l'Exécutable mysqld

Le serveur mysqld peut être paramétrer en passant des options à l'exécutable lors de son lancement. Dans ce cas, les options sont les mêmes que celles dans le fichier my.cnf, précédées par deux tirés.

Paramétrer le Serveur Dynamiquement

Pour paramétrer le serveur à chaud, il convient d'utiliser la commande SET. Pour utiliser la commande SET, il faut posséder le privilège SUPER.

La portée des options peut être SESSION, c'est-à-dire pour la session en cours, ou GLOBAL pour toutes le sessions.

SESSION

Prenant l'example de l'option tmp_table_size :

[root@centos8 ~]# mysql -uroot -p
Enter password: fenestros
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'tmp_table_size';
+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
1 row in set (0.001 sec)

MariaDB [(none)]> SHOW SESSION VARIABLES LIKE 'tmp_table_size';
+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
1 row in set (0.000 sec)

MariaDB [(none)]> SET SESSION tmp_table_size=8388608;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'tmp_table_size';
+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
1 row in set (0.000 sec)

MariaDB [(none)]> SHOW SESSION VARIABLES LIKE 'tmp_table_size';
+----------------+---------+
| Variable_name  | Value   |
+----------------+---------+
| tmp_table_size | 8388608 |
+----------------+---------+
1 row in set (0.001 sec)

MariaDB [(none)]>

Important - Notez que la modification est immédiate.

GLOBAL

En utilisant la même option :

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'tmp_table_size';
+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| tmp_table_size | 16777216 |
+----------------+----------+
1 row in set (0.000 sec)

MariaDB [(none)]> SET GLOBAL tmp_table_size=8388608;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'tmp_table_size';
+----------------+---------+
| Variable_name  | Value   |
+----------------+---------+
| tmp_table_size | 8388608 |
+----------------+---------+
1 row in set (0.000 sec)

MariaDB [(none)]> SHOW SESSION VARIABLES LIKE 'tmp_table_size';
+----------------+---------+
| Variable_name  | Value   |
+----------------+---------+
| tmp_table_size | 8388608 |
+----------------+---------+
1 row in set (0.000 sec)

MariaDB [(none)]> 

Prenons maintenant le cas d'une option qui n'a qu'une portée globale :

MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache_size';
+------------------+---------+
| Variable_name    | Value   |
+------------------+---------+
| query_cache_size | 1048576 |
+------------------+---------+
1 row in set (0.001 sec)

MariaDB [(none)]> SET SESSION query_cache_size=122880;
ERROR 1229 (HY000): Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
MariaDB [(none)]>

Important - Notez que pour une option ayant uniquement une portée globale, la modification de la valeur globale est prise en compte dans la session active. Notez aussi que les modifications à chaud ne sont pas persistants.

LAB #3 - Le Mode SQL

Le mode SQL est utilisé principalement pour empêcher l'insertion de données invalides. La valeur par défaut du mode SQL peut être visualisée avec la commande suivante :

MariaDB [(none)]> SHOW SESSION VARIABLES LIKE 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                     |
+---------------+-------------------------------------------------------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)

MariaDB [(none)]> 

Les valeurs de l'option sql_mode peuvent être combinées. Pour aider l'administrateur, MariaDB propose un mode sql appelé TRADITIONAL :

MariaDB [(none)]> SET SESSION sql_mode='TRADITIONAL';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW SESSION VARIABLES LIKE 'sql_mode';
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                                |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

Copyright © 2021 Hugh Norris

Menu