Ceci est une ancienne révision du document !


Version : 2022.01

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

SER805 - Administration et Maintenance

Administration

Mysqladmin

Mysqladmin est utile pour diverses tâches d'administration, comme la création et la suppression de base de données ou le changement démographe. La syntaxe est simple :

 # mysqladmin [option] admincommand

  • admincommand définit la tâche effectuée par mysqladmin.

Nous présentons ici que les trois commandes principales.

create

Cette commande crée une nouvelle base de données :

[root@centos8 ~]# mysqladmin -u root -p create newdb
Enter password: fenestros

drop

Cette commande supprime une base de données:

[root@centos8 ~]# mysqladmin -u root -p drop newdb
Enter password: fenestros
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'newdb' database [y/N] y
Database "newdb" dropped

password

Cette commande modifie le mot de passe de l'utilisateur donné par –u :

[root@centos8 ~]# mysqladmin -u root -p password "fenestros1"
Enter password: fenestros

Connectez-vous à MySQL en tant que root en utilisant le nouveau mot de passe :

[root@centos8 ~]# mysql -u root -p mysql
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.3.28-MariaDB-log 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 [mysql]>

Important - Notez que les mots de passe ne sont pas visibles. Ils le sont dans les exemples précédents uniquement pour rendre le cours plus clair.

Méta-données

Avec MariaDB on parle souvent de Méta-données. Ces données donnent non seulement des renseignements sur le contenu d'une table, mais aussi des précisions sur ses propriétés. Par exemple:

  • Les bases de données gérées par MariaDB
  • Les tables contenus dans ces bases de données
  • Les propriétés dont disposent les tables

Plusieurs commandes peuvent être utilisées pour visualiser les Méta-données:

La commande DESCRIBE

Sélectionnez la base de données ligue1:

MariaDB [mysql]> use ligue1;
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

Décrivez la table equipe de la base ligue1:

MariaDB [ligue1]> DESCRIBE equipe;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id_equipe      | int(11)      | NO   | PRI | NULL    | auto_increment |
| nom            | varchar(50)  | NO   |     | NULL    |                |
| stade          | varchar(50)  | NO   |     | NULL    |                |
| ville          | varchar(30)  | NO   |     | NULL    |                |
| points         | int(11)      | NO   |     | 0       |                |
| buts           | int(11)      | NO   |     | 0       |                |
| entraineur     | varchar(100) | YES  |     | inconnu |                |
| tel_entraineur | varchar(20)  | YES  |     | inconnu |                |
+----------------+--------------+------+-----+---------+----------------+
8 rows in set (0.001 sec)

MariaDB [ligue1]>

La commande EXPLAIN

La commande EXPLAIN produit le même résultat que la commande DESCRIBE :

MariaDB [ligue1]> EXPLAIN equipe;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id_equipe      | int(11)      | NO   | PRI | NULL    | auto_increment |
| nom            | varchar(50)  | NO   |     | NULL    |                |
| stade          | varchar(50)  | NO   |     | NULL    |                |
| ville          | varchar(30)  | NO   |     | NULL    |                |
| points         | int(11)      | NO   |     | 0       |                |
| buts           | int(11)      | NO   |     | 0       |                |
| entraineur     | varchar(100) | YES  |     | inconnu |                |
| tel_entraineur | varchar(20)  | YES  |     | inconnu |                |
+----------------+--------------+------+-----+---------+----------------+
8 rows in set (0.000 sec)

MariaDB [ligue1]>

Par contre la commande EXPLAIN peut aussi être utilisée pour contrôler le processus suivi par MariaDB lors d'une commande donnée. Pour comprendre ceci, saisissez les deux commandes suivantes:

MariaDB [ligue1]> SELECT nom, stade, ville FROM equipe;
+------------------------+------------------+------------+
| nom                    | stade            | ville      |
+------------------------+------------------+------------+
| FC Mandriva            | Parc des Princes | Paris      |
| Debian AC              | Yankee Stadium   | New York   |
| Vista FC               | Qwest Field      | Redmond    |
| Racing Club Strasbourg | La Meinau        | STRASBOURG |
+------------------------+------------------+------------+
4 rows in set (0.000 sec)

MariaDB [ligue1]> EXPLAIN SELECT nom, stade, ville FROM equipe;
+------+-------------+--------+------+---------------+------+---------+------+------+-------+
| id   | select_type | table  | type | possible_keys | key  | key_len | ref  | rows | Extra |
+------+-------------+--------+------+---------------+------+---------+------+------+-------+
|    1 | SIMPLE      | equipe | ALL  | NULL          | NULL | NULL    | NULL |    4 |       |
+------+-------------+--------+------+---------------+------+---------+------+------+-------+
1 row in set (0.000 sec)

MariaDB [ligue1]>

La commande BENCHMARK

Cette commande retourne toujours la valeur 0. Par contre son utilité est de contrôler le temps d'exécution du client mysql. La commande prend la forme suivante:

BENCHMARK(nbfois, expression); [Entrée]

Par exemple, la commande suivante, exécutée trois fois de suite:

MariaDB [ligue1]> select BENCHMARK(1000000000, "select * FROM equipe");
+-----------------------------------------------+
| BENCHMARK(1000000000, "select * FROM equipe") |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+
1 row in set (5.484 sec)

MariaDB [ligue1]> select BENCHMARK(1000000000, "select * FROM equipe");
+-----------------------------------------------+
| BENCHMARK(1000000000, "select * FROM equipe") |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+
1 row in set (5.473 sec)

MariaDB [ligue1]> select BENCHMARK(1000000000, "select * FROM equipe");
+-----------------------------------------------+
| BENCHMARK(1000000000, "select * FROM equipe") |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+
1 row in set (5.362 sec)

MariaDB [ligue1]>

La Commande SHOW

La commande SHOW permet d'obtenir de différentes informations sur les bases MariaDB:

SHOW DATABASES

Cette commande prend la forme suivante :

SHOW DATABASES [LIKE '%motif%'];

Par exemple:

MariaDB [ligue1]> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| Nombres            |
| information_schema |
| ligue1             |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.000 sec)

MariaDB [ligue1]>
SHOW TABLES

Cette commande prend la forme suivante :

SHOW TABLES [FROM nomdb] [LIKE '%motif%'];

Par exemple:

MariaDB [ligue1]> SHOW tables;
+------------------+
| Tables_in_ligue1 |
+------------------+
| V_EQUIPE         |
| equipe           |
| rencontre        |
+------------------+
3 rows in set (0.000 sec)

MariaDB [ligue1]>
SHOW OPEN TABLES

Cette commande prend la forme suivante :

SHOW OPEN TABLES [FROM nomdb] [LIKE '%motif%'];

Par exemple :

MariaDB [ligue1]> SHOW OPEN TABLES;
+----------+---------------------------+--------+-------------+
| Database | Table                     | In_use | Name_locked |
+----------+---------------------------+--------+-------------+
| ligue1   | equipe                    |      0 |           0 |
| mysql    | servers                   |      0 |           0 |
| mysql    | procs_priv                |      0 |           0 |
| mysql    | table_stats               |      0 |           0 |
| mysql    | index_stats               |      0 |           0 |
| mysql    | plugin                    |      0 |           0 |
| mysql    | time_zone_transition      |      0 |           0 |
| mysql    | time_zone_leap_second     |      0 |           0 |
| mysql    | time_zone                 |      0 |           0 |
| mysql    | help_category             |      0 |           0 |
| mysql    | host                      |      0 |           0 |
| mysql    | general_log               |      0 |           0 |
| mysql    | user                      |      0 |           0 |
| ligue1   | V_EQUIPE                  |      0 |           0 |
| mysql    | roles_mapping             |      0 |           0 |
| mysql    | time_zone_transition_type |      0 |           0 |
| mysql    | proxies_priv              |      0 |           0 |
| mysql    | event                     |      0 |           0 |
| mysql    | columns_priv              |      0 |           0 |
| mysql    | proc                      |      0 |           0 |
| mysql    | help_keyword              |      0 |           0 |
| mysql    | func                      |      0 |           0 |
| mysql    | time_zone_name            |      0 |           0 |
| mysql    | db                        |      0 |           0 |
| mysql    | slow_log                  |      0 |           0 |
| mysql    | column_stats              |      0 |           0 |
| mysql    | help_topic                |      0 |           0 |
| mysql    | help_relation             |      0 |           0 |
| mysql    | tables_priv               |      0 |           0 |
| mysql    | gtid_slave_pos            |      0 |           0 |
| mysql    | innodb_table_stats        |      0 |           0 |
| mysql    | innodb_index_stats        |      0 |           0 |
| ligue1   | rencontre                 |      0 |           0 |
| mysql    | transaction_registry      |      0 |           0 |
+----------+---------------------------+--------+-------------+
34 rows in set (0.000 sec)

MariaDB [ligue1]>

Important : La valeur de la colonne In_use étant 0, ceci indique que la table est ouverte mais qu'il n'y a pas d'accès actuel. Si un client cause un verrou d'être posé sur une table, la valeur passe à 1. Quand un autre client exécute une requête nécessitant un verrou sur la table, la valeur passe à 2. Mais dans ce cas, la deuxième requête n'est pas exécutée avant la libération du verrou par le premier client. La valeur de la colonne Name_locked indique le nombre de verrous posés sur le nom de la table. Un verrou est posé sur le nom d'une table lors d'une opération de renommage de la table ou de la suppression de la table. Pour plus 'information, voir https://dev.mysql.com/doc/refman/5.6/en/show-open-tables.html.

SHOW COLUMNS

Cette commande prend la forme suivante :

SHOW [FULL] COLUMNS FROM nomtable [LIKE '%motif%'];

Par exemple:

MariaDB [ligue1]> SHOW COLUMNS FROM equipe;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id_equipe      | int(11)      | NO   | PRI | NULL    | auto_increment |
| nom            | varchar(50)  | NO   |     | NULL    |                |
| stade          | varchar(50)  | NO   |     | NULL    |                |
| ville          | varchar(30)  | NO   |     | NULL    |                |
| points         | int(11)      | NO   |     | 0       |                |
| buts           | int(11)      | NO   |     | 0       |                |
| entraineur     | varchar(100) | YES  |     | inconnu |                |
| tel_entraineur | varchar(20)  | YES  |     | inconnu |                |
+----------------+--------------+------+-----+---------+----------------+
8 rows in set (0.001 sec)

MariaDB [ligue1]> 

ou

MariaDB [ligue1]> SHOW FULL COLUMNS FROM equipe;
+----------------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field          | Type         | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+----------------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id_equipe      | int(11)      | NULL              | NO   | PRI | NULL    | auto_increment | select,insert,update,references |         |
| nom            | varchar(50)  | latin1_swedish_ci | NO   |     | NULL    |                | select,insert,update,references |         |
| stade          | varchar(50)  | latin1_swedish_ci | NO   |     | NULL    |                | select,insert,update,references |         |
| ville          | varchar(30)  | latin1_swedish_ci | NO   |     | NULL    |                | select,insert,update,references |         |
| points         | int(11)      | NULL              | NO   |     | 0       |                | select,insert,update,references |         |
| buts           | int(11)      | NULL              | NO   |     | 0       |                | select,insert,update,references |         |
| entraineur     | varchar(100) | latin1_swedish_ci | YES  |     | inconnu |                | select,insert,update,references |         |
| tel_entraineur | varchar(20)  | latin1_swedish_ci | YES  |     | inconnu |                | select,insert,update,references |         |
+----------------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
8 rows in set (0.001 sec)

MariaDB [ligue1]>
SHOW INDEX

Cette commande prend la forme suivante :

SHOW INDEX FROM nomtable [FROM nomdb];

Par exemple;

MariaDB [ligue1]> SHOW INDEX FROM equipe;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| equipe |          0 | PRIMARY  |            1 | id_equipe   | A         |           4 |     NULL | NULL   |      | BTREE      |         |               |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.000 sec)

MariaDB [ligue1]>
SHOW TABLE STATUS

Cette commande prend la forme suivante :

SHOW TABLE STATUS [FROM nomdb] [LIKE '%motif%'];

Par exemple;

MariaDB [ligue1]> SHOW TABLE STATUS;
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+--------------------+-----------+
| Name      | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation         | Checksum | Create_options | Comment | Max_index_length   | Temporary |
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+--------------------+-----------+
| V_EQUIPE  | NULL   |    NULL | NULL       | NULL |           NULL |        NULL |            NULL |         NULL |      NULL |           NULL | NULL                | NULL                | NULL       | NULL              |     NULL | NULL           | VIEW    |               NULL | NULL      |
| equipe    | MyISAM |      10 | Dynamic    |    4 |             80 |         320 | 281474976710655 |         2048 |         0 |              5 | 2022-11-08 12:02:12 | 2022-11-08 12:02:54 | NULL       | latin1_swedish_ci |     NULL |                |         |   1125899906841600 | N         |
| rencontre | MyISAM |      10 | Dynamic    |    6 |             32 |         192 | 281474976710655 |         2048 |         0 |           NULL | 2022-11-08 04:59:52 | 2022-11-08 12:01:12 | NULL       | latin1_swedish_ci |     NULL |                |         | 288230376151710720 | N         |
+-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+--------------------+-----------+
3 rows in set (0.000 sec)

MariaDB [ligue1]> 
SHOW STATUS

Cette commande prend la forme suivante :

SHOW STATUS [LIKE '%motif%'];

Par exemple:

MariaDB [ligue1]> SHOW STATUS \G
...
*************************** 531. row ***************************
Variable_name: wsrep_provider_name
        Value: 
*************************** 532. row ***************************
Variable_name: wsrep_provider_vendor
        Value: 
*************************** 533. row ***************************
Variable_name: wsrep_provider_version
        Value: 
*************************** 534. row ***************************
Variable_name: wsrep_ready
        Value: OFF
*************************** 535. row ***************************
Variable_name: wsrep_rollbacker_thread_count
        Value: 0
*************************** 536. row ***************************
Variable_name: wsrep_thread_count
        Value: 0
536 rows in set (0.002 sec)

MariaDB [ligue1]>
SHOW VARIABLES

Cette commande prend la forme suivante :

SHOW [GLOBAL|SESSION] VARIABLES [LIKE '%motif%'];

Par exemple:

MariaDB [ligue1]> SHOW VARIABLES \G
...
*************************** 638. row ***************************
Variable_name: wsrep_sst_donor
        Value: 
*************************** 639. row ***************************
Variable_name: wsrep_sst_donor_rejects_queries
        Value: OFF
*************************** 640. row ***************************
Variable_name: wsrep_sst_method
        Value: rsync
*************************** 641. row ***************************
Variable_name: wsrep_sst_receive_address
        Value: AUTO
*************************** 642. row ***************************
Variable_name: wsrep_start_position
        Value: 00000000-0000-0000-0000-000000000000:-1
*************************** 643. row ***************************
Variable_name: wsrep_sync_wait
        Value: 0
643 rows in set (0.001 sec)

MariaDB [ligue1]>
SHOW PROCESSLIST

Cette commande prend la forme suivante :

SHOW [FULL] PROCESSLIST;

Par exemple:

MariaDB [ligue1]> SHOW  PROCESSLIST;
+----+-------------+-----------+--------+---------+-------+--------------------------+-------------------+----------+
| Id | User        | Host      | db     | Command | Time  | State                    | Info              | Progress |
+----+-------------+-----------+--------+---------+-------+--------------------------+-------------------+----------+
|  2 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL              |    0.000 |
|  1 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL              |    0.000 |
|  3 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge coordinator | NULL              |    0.000 |
|  4 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL              |    0.000 |
|  5 | system user |           | NULL   | Daemon  |  NULL | InnoDB shutdown handler  | NULL              |    0.000 |
| 10 | user2       | localhost | NULL   | Sleep   | 12108 |                          | NULL              |    0.000 |
| 14 | root        | localhost | ligue1 | Query   |     0 | Init                     | SHOW  PROCESSLIST |    0.000 |
+----+-------------+-----------+--------+---------+-------+--------------------------+-------------------+----------+
7 rows in set (0.000 sec)

MariaDB [ligue1]> SHOW FULL PROCESSLIST;
+----+-------------+-----------+--------+---------+-------+--------------------------+-----------------------+----------+
| Id | User        | Host      | db     | Command | Time  | State                    | Info                  | Progress |
+----+-------------+-----------+--------+---------+-------+--------------------------+-----------------------+----------+
|  2 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL                  |    0.000 |
|  1 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL                  |    0.000 |
|  3 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge coordinator | NULL                  |    0.000 |
|  4 | system user |           | NULL   | Daemon  |  NULL | InnoDB purge worker      | NULL                  |    0.000 |
|  5 | system user |           | NULL   | Daemon  |  NULL | InnoDB shutdown handler  | NULL                  |    0.000 |
| 10 | user2       | localhost | NULL   | Sleep   | 12151 |                          | NULL                  |    0.000 |
| 14 | root        | localhost | ligue1 | Query   |     0 | Init                     | SHOW FULL PROCESSLIST |    0.000 |
+----+-------------+-----------+--------+---------+-------+--------------------------+-----------------------+----------+
7 rows in set (0.000 sec)

MariaDB [ligue1]> 
SHOW GRANTS

Cette commande prend la forme suivante :

SHOW GRANTS FOR utilisateur;

Par exemple:

MariaDB [ligue1]> SHOW GRANTS;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED BY PASSWORD '*F3E048E28ED63F281CF8A403F96F5D283C8700E6' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION                                                                          |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB [ligue1]>
SHOW CREATE TABLE

Cette commande prend la forme suivante :

SHOW CREATE TABLE nomtable[\G];

Par exemple:

MariaDB [ligue1]> SHOW CREATE TABLE equipe;
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                          |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| equipe | CREATE TABLE `equipe` (
  `id_equipe` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(50) NOT NULL,
  `stade` varchar(50) NOT NULL,
  `ville` varchar(30) NOT NULL,
  `points` int(11) NOT NULL DEFAULT 0,
  `buts` int(11) NOT NULL DEFAULT 0,
  `entraineur` varchar(100) DEFAULT 'inconnu',
  `tel_entraineur` varchar(20) DEFAULT 'inconnu',
  PRIMARY KEY (`id_equipe`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [ligue1]>

ou

MariaDB [ligue1]> SHOW CREATE TABLE equipe \G
*************************** 1. row ***************************
       Table: equipe
Create Table: CREATE TABLE `equipe` (
  `id_equipe` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(50) NOT NULL,
  `stade` varchar(50) NOT NULL,
  `ville` varchar(30) NOT NULL,
  `points` int(11) NOT NULL DEFAULT 0,
  `buts` int(11) NOT NULL DEFAULT 0,
  `entraineur` varchar(100) DEFAULT 'inconnu',
  `tel_entraineur` varchar(20) DEFAULT 'inconnu',
  PRIMARY KEY (`id_equipe`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
1 row in set (0.000 sec)

MariaDB [ligue1]>

Important - Notez l'utilisation de \G pour rendre la sortie plus lisible.

La Commande SET

La commande SET permet de spécifier les valeurs des options du serveur ou des programmes clients.

Par example la saisie de la commande suivante démontre que la valeur de max_connections est de 151:

MariaDB [ligue1]> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.001 sec)

MariaDB [ligue1]>

Pour modifier cette valeur à 200, saisissez la commande suivante:

MariaDB [ligue1]> SET GLOBAL max_connections = 200;
Query OK, 0 rows affected (0.000 sec)

MariaDB [ligue1]> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 200   |
+-----------------+-------+
1 row in set (0.000 sec)

MariaDB [ligue1]>

Important - Notez que dans ce cas il s'agit d'une variable globale. Dans le cas d'une variable de SESSION, il convient de modifier la commande à SET SESSION.

La Commande KILL

La commande KILL permet d'interrompre un thread en cours. Elle prend la forme suivante.

> KILL idThread; [Entrée]

Pour comprendre son utilisation, créez d'abord un utilisateur :

MariaDB [ligue1]> GRANT USAGE ON * TO fenestros@localhost IDENTIFIED BY 'fenestros';
Query OK, 0 rows affected (0.000 sec)

MariaDB [ligue1]>

Accordez les privilèges de connexion à l'utilisateur fenestros:

MariaDB [ligue1]> SHOW GRANTS for fenestros@localhost;
+------------------------------------------------------------------------------------------------------------------+
| Grants for fenestros@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `fenestros`@`localhost` IDENTIFIED BY PASSWORD '*00269BA49BEC800F9CCF34C20C1FD83E0236B89A' |
+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [ligue1]>  

Ouvrez une autre session sur la VM et connectez-vous à votre serveur MariaDB avec le compte de fenestros sans vous déconnecter en tant que root et saisissez la commande pour vérifiez que tout va bien:

[root@centos8 ~]# mysql -u fenestros -p
Enter password: fenestros
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.3.28-MariaDB-log 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 DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> 

Important - Notez que le mote de passe ne sera pas visible.

Revenez à la première connexion à votre VM et saisissez la commande suivante:

MariaDB [(none)]> SHOW PROCESSLIST;
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
| Id | User        | Host      | db   | Command | Time  | State                    | Info             | Progress |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
|  2 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  1 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  3 | system user |           | NULL | Daemon  |  NULL | InnoDB purge coordinator | NULL             |    0.000 |
|  4 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  5 | system user |           | NULL | Daemon  |  NULL | InnoDB shutdown handler  | NULL             |    0.000 |
| 10 | user2       | localhost | NULL | Sleep   | 12771 |                          | NULL             |    0.000 |
| 15 | fenestros   | localhost | NULL | Sleep   |   164 |                          | NULL             |    0.000 |
| 16 | root        | localhost | NULL | Query   |     0 | Init                     | SHOW PROCESSLIST |    0.000 |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
8 rows in set (0.000 sec)

MariaDB [(none)]> 

Important - Notez bien la présence de l'utilisateur fenestros.

Pour interrompre le thread de fenestros, saisissez la commande KILL suivi de la valeur de l'Id correspondante :

MariaDB [(none)]> KILL 15;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW PROCESSLIST;
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
| Id | User        | Host      | db   | Command | Time  | State                    | Info             | Progress |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
|  2 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  1 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  3 | system user |           | NULL | Daemon  |  NULL | InnoDB purge coordinator | NULL             |    0.000 |
|  4 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  5 | system user |           | NULL | Daemon  |  NULL | InnoDB shutdown handler  | NULL             |    0.000 |
| 10 | user2       | localhost | NULL | Sleep   | 12811 |                          | NULL             |    0.000 |
| 16 | root        | localhost | NULL | Query   |     0 | Init                     | SHOW PROCESSLIST |    0.000 |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
7 rows in set (0.000 sec)

MariaDB [(none)]> 

Important - Notez que le thread de l'utilisateur fenestros a été terminée.

Consultez maintenant la connexion de fenestros au serveur MariaDB et lancez la commande suivante:

MariaDB [(none)]> SHOW DATABASES;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    17
Current database: *** NONE ***

+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.004 sec)

MariaDB [(none)]>

Important - Notez que le client se reconnecte au serveur!

Contrôlez maintenant la PROCESSLIST à partir de la connexion de root :

MariaDB [(none)]> SHOW PROCESSLIST;
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
| Id | User        | Host      | db   | Command | Time  | State                    | Info             | Progress |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
|  2 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  1 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  3 | system user |           | NULL | Daemon  |  NULL | InnoDB purge coordinator | NULL             |    0.000 |
|  4 | system user |           | NULL | Daemon  |  NULL | InnoDB purge worker      | NULL             |    0.000 |
|  5 | system user |           | NULL | Daemon  |  NULL | InnoDB shutdown handler  | NULL             |    0.000 |
| 10 | user2       | localhost | NULL | Sleep   | 12912 |                          | NULL             |    0.000 |
| 16 | root        | localhost | NULL | Query   |     0 | Init                     | SHOW PROCESSLIST |    0.000 |
| 17 | fenestros   | localhost | NULL | Sleep   |    28 |                          | NULL             |    0.000 |
+----+-------------+-----------+------+---------+-------+--------------------------+------------------+----------+
8 rows in set (0.000 sec)

MariaDB [(none)]> 

Voici la même commande à partir de la connexion de fenestros :

MariaDB [(none)]> SHOW PROCESSLIST;
+----+-----------+-----------+------+---------+------+-------+------------------+----------+
| Id | User      | Host      | db   | Command | Time | State | Info             | Progress |
+----+-----------+-----------+------+---------+------+-------+------------------+----------+
| 17 | fenestros | localhost | NULL | Query   |    0 | Init  | SHOW PROCESSLIST |    0.000 |
+----+-----------+-----------+------+---------+------+-------+------------------+----------+
1 row in set (0.000 sec)

MariaDB [(none)]> 

Important - Notez qu'un autre thread pour la connexion de fenestros a été démarré.

La Commande FLUSH

La commande FLUSH permet de vider les caches du serveur MariaDB.

FLUSH HOSTS

Cette commande ré-initialise le cache des adresse IP des clients:

MariaDB [(none)]> FLUSH HOSTS; [Entrée]
FLUSH LOGS

Cette commande ferme les fichiers de logs et crée de nouveaux:

MariaDB [(none)]> FLUSH LOGS; [Entrée]
FLUSH PRIVILEGES

Cette commande recharge la table de privileges:

MariaDB [(none)]> FLUSH PRIVILEGES; [Entrée]
FLUSH TABLES

Cette commande vide les caches des tables et les ferme:

MariaDB [(none)]> FLUSH TABLES; [Entrée]

En cas de tables multiples, il convient d'utiliser la commande suivante:

MariaDB [(none)]> FLUSH [TABLE|TABLES] nomtable [,nomtable]; [Entrée]

La base INFORMATION_SCHEMA

Les commandes SHOW ne correspondent pas aux standards SQL2003. MariaDB 5.x fournit une base spécifique appelée INFORMATION_SCHEMA qui contient les Méta-données :

MariaDB [(none)]> USE information_schema
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 [information_schema]> SHOW TABLES;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| ALL_PLUGINS                           |
| APPLICABLE_ROLES                      |
| CHARACTER_SETS                        |
| CHECK_CONSTRAINTS                     |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENABLED_ROLES                         |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| KEY_CACHES                            |
| KEY_COLUMN_USAGE                      |
| PARAMETERS                            |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| STATISTICS                            |
| SYSTEM_VARIABLES                      |
| TABLES                                |
| TABLESPACES                           |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
| GEOMETRY_COLUMNS                      |
| SPATIAL_REF_SYS                       |
| CLIENT_STATISTICS                     |
| INDEX_STATISTICS                      |
| INNODB_SYS_DATAFILES                  |
| USER_STATISTICS                       |
| INNODB_SYS_TABLESTATS                 |
| INNODB_LOCKS                          |
| INNODB_MUTEXES                        |
| INNODB_CMPMEM                         |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMP                            |
| INNODB_FT_DELETED                     |
| INNODB_CMP_RESET                      |
| INNODB_LOCK_WAITS                     |
| TABLE_STATISTICS                      |
| INNODB_TABLESPACES_ENCRYPTION         |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_SYS_FIELDS                     |
| INNODB_CMPMEM_RESET                   |
| INNODB_SYS_COLUMNS                    |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_CMP_PER_INDEX_RESET            |
| user_variables                        |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_SYS_FOREIGN_COLS               |
| INNODB_FT_BEING_DELETED               |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_TRX                            |
| INNODB_SYS_FOREIGN                    |
| INNODB_SYS_TABLES                     |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_FT_CONFIG                      |
| INNODB_BUFFER_PAGE                    |
| INNODB_SYS_TABLESPACES                |
| INNODB_METRICS                        |
| INNODB_SYS_INDEXES                    |
| INNODB_SYS_VIRTUAL                    |
| INNODB_TABLESPACES_SCRUBBING          |
| INNODB_SYS_SEMAPHORE_WAITS            |
+---------------------------------------+
76 rows in set (0.001 sec)

MariaDB [information_schema]>exit
Bye

Chaque table de cette base fournit des informations spécifiques, par exemple :

TABLE Contenu
CHARACTER_SETS Informations sur jeux de caractères.
COLLATIONS Informations sur interclassements.
COLLATION_CHARACTER_SET_APPLICABILITY Correspondances interclassements / charsets.
COLUMNS Informations sur leurs colonnes.
COLUMN_PRIVILEGES Informations sur les privilèges sur les colonnes.
KEY_COLUMN_USAGE clés primaires et étrangères.
ROUTINES Informations sur les procédures et fonctions stockées.
SCHEMATA Informations sur les bases (ou schémas).
SCHEMA_PRIVILEGES Informations sur privilèges sur les bases.
STATISTICS Informations sur les indexes.
TABLES Informations sur les tables.
TABLE_CONSTRAINTS Informations sur les contraintes des tables.
TABLE_PRIVILEGES Informations sur les privilèges sur les tables.
TRIGGERS Informations sur les déclencheurs.
USER_PRIVILEGES Informations sur les privilèges globaux.
VIEWS Informations sur les vues.

Outils d'Administration Graphiques

Téléchargez mysql-workbench-community-8.0.20-1.el8.x86_64.rpm :

[root@centos8 ~]# wget https://downloads.mysql.com/archives/get/p/8/file/mysql-workbench-community-8.0.20-1.el8.x86_64.rpm   

Installez maintenant le paquet :

[root@centos8 ~]# yum localinstall mysql-workbench-community-8.0.20-1.el8.x86_64.rpm --nogpgcheck

A faire - Connectez-vous à votre VM via Guacamole. Testez MySQL Workbench.

Maintenance

Instructions SQL

CHECK TABLE

Cette commande fonctionne avec les moteurs de type MyISAM, Archive, CSV et InnoDB. La commande peut prendre 5 options :

Option Description
QUICK Ne recherche pas d'enregistrements orphelins
FAST Ne vérifie que les tables qui n'ont pas été fermées correctement
CHANGED Ne vérifie que les tables ayant subi une modification depuis la dernière vérification
MEDIUM Vérifie les enregistrements et génère une cléf d'intégrité (Checksum). Si aucune option n'est spécifiée, MEDIUM est l'option par défaut.
EXTENDED Vérifie les enregistrements et génère une cléf d'intégrité (Checksum) par enregistrement

Vérifiez les tables de votre base ligue1 ;

[root@centos8 ~]# mysql -u root -p
Enter password: fenestros1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 18
Server version: 10.3.28-MariaDB-log 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)]> CHECK TABLE ligue1.equipe, ligue1.rencontre;
+------------------+-------+----------+----------+
| Table            | Op    | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| ligue1.equipe    | check | status   | OK       |
| ligue1.rencontre | check | status   | OK       |
+------------------+-------+----------+----------+
2 rows in set (0.000 sec)

MariaDB [(none)]> 

Vérifiez les tables de votre base ligue1 avec l'option FAST :

MariaDB [(none)]> CHECK TABLE ligue1.equipe, ligue1.rencontre FAST;
+------------------+-------+----------+-----------------------------+
| Table            | Op    | Msg_type | Msg_text                    |
+------------------+-------+----------+-----------------------------+
| ligue1.equipe    | check | status   | Table is already up to date |
| ligue1.rencontre | check | status   | Table is already up to date |
+------------------+-------+----------+-----------------------------+
2 rows in set (0.000 sec)

MariaDB [(none)]> 

REPAIR TABLE

Dans certains cas, la commande CHECK TABLE relève des erreurs. Dans le cas précis d'une erreur du type warning due à la non-fermeture d'une table, il convient de fermer toutes les tables en utilisant la commande :

> FLUSH TABLES; [Entrée]

Dans d'autres cas plus sérieux, on fait appelle à la commande REPAIR TABLE. La commande REPAIR TABLE ne fonctionne qu'avec des moteurs MyISAM, Archive et CSV. La commande peut prendre 4 options :

Option Description
NO_WRITE_TO_BINLOG N'écrit pas la commande dans le journal binaire
QUICK Ne répare que l'index
EXTENDED Gére des index de chaînes longues
USE_FRM Permet de recréer un fichier d'index (.MYI) à partir des informations dans le fichier .frm. Attention : La valeur auto-incrément actuel est perdu et les tables compressées sont supprimées

Saisissez la commande suivante :

MariaDB [(none)]> REPAIR TABLE ligue1.equipe, ligue1.rencontre;
+------------------+--------+----------+----------+
| Table            | Op     | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| ligue1.equipe    | repair | status   | OK       |
| ligue1.rencontre | repair | status   | OK       |
+------------------+--------+----------+----------+
2 rows in set (0.001 sec)

MariaDB [(none)]>

Les actions de maintenance peuvent être automatisées par l'addition de la directive myisam-recover = OPTION au fichier my.cnf. Cette directive force le serveur d'exécuter un CHECK TABLE dans le cas où une table est marquée crashed ou si elle a été mal fermée. Dans le cas de problèmes le serveur exécutera un REPAIR TABLE. La directive peut prendre 4 options :

  • BACKUP : génère une sauvegarde au format nom_table-dateheure.BAK du fichier des données dans le cas où la réparation nécessite la modification d'enregistrements,
  • FORCE : force la réparation même si des enregistrements doivent être supprimés,
  • QUICK : les tables sans trous sont ignorés,
  • DEFAULT : tente de restaurer la table.

OPTIMIZE TABLE

La commande OPTIMIZE TABLE permet de défragmenter une table ou plusieurs tables. La commande OPTIMIZE TABLE fonctionne avec le moteur MyISAM et le moteur InnoDB.

Saisissez la commande suivante :

MariaDB [(none)]> OPTIMIZE TABLE ligue1.equipe, ligue1.rencontre;
+------------------+----------+----------+----------+
| Table            | Op       | Msg_type | Msg_text |
+------------------+----------+----------+----------+
| ligue1.equipe    | optimize | status   | OK       |
| ligue1.rencontre | optimize | status   | OK       |
+------------------+----------+----------+----------+
2 rows in set (0.001 sec)

MariaDB [(none)]> 

ANALYZE TABLE

La commande ANALYZE TABLE permet d'analyser et d'enregistrer des statistiques sur une table ou plusieurs tables. La commande ANALYZE TABLE ne fonctionne qu'avec des tables au format MyISAM et BDB.

Saisissez la commande suivante :

MariaDB [(none)]> ANALYZE TABLE ligue1.equipe, ligue1.rencontre;
+------------------+---------+----------+-----------------------------+
| Table            | Op      | Msg_type | Msg_text                    |
+------------------+---------+----------+-----------------------------+
| ligue1.equipe    | analyze | status   | Table is already up to date |
| ligue1.rencontre | analyze | status   | Table is already up to date |
+------------------+---------+----------+-----------------------------+
2 rows in set (0.000 sec)

MariaDB [(none)]>

A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/analyze-table.html.

myisamchk

Le programme myisamchk permet d'exécuter en ligne de commande à partir du shell les opérations de maintenance. Comme son nom indique, il ne peut être utiliser qu'avec des tables au format MyISAM. Le programme myisamchk doit être utilisé avec le serveur mysqld arreté.

Sortez de mysql et arretez le serveur mysqld :

MariaDB [(none)]> exit
Bye
[root@centos8 ~]# systemctl stop mariadb

Saisissez ensuite la commande suivante pour vérifier tous les index de la base ligue1 :

[root@centos8 ~]# myisamchk /var/lib/mysql/ligue1/*MYI
Checking MyISAM file: /var/lib/mysql/ligue1/equipe.MYI
Data records:       4   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links
          
---------

Checking MyISAM file: /var/lib/mysql/ligue1/rencontre.MYI
Data records:       6   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links

La commande myisamchk peut prendre plusieurs options. Nous détaillons ici que les principales :

Option Description
-F ou - -fast Ne vérifie que les tables fermées
-C ou - -check-only-changed Ne vérifie que les tables ayant subi une modification depuis la dernière vérification
-i ou - -information Permet de montrer les statistiques concernant la vérification
-r ou - -recover Permet de réparer une table
-a ou - -analyze Permet d'analyser une table
-d ou - -description Permet de recevoir des informations sur une table
-S ou - -sort-index Permet de trier les index pour optimiser des requêtes

Saisissez la commande suivante :

[root@centos8 ~]# myisamchk -ri /var/lib/mysql/ligue1/rencontre /var/lib/mysql/ligue1/equipe
- recovering (with sort) MyISAM-table '/var/lib/mysql/ligue1/rencontre'
Data records: 6
- Fixing index 1
          
---------

- recovering (with sort) MyISAM-table '/var/lib/mysql/ligue1/equipe'
Data records: 4
- Fixing index 1
          
User time 0.00, System time 0.00
Maximum resident set size 4176, Integral resident set size 0
Non-physical pagefaults 257, Physical pagefaults 0, Swaps 0
Blocks in 0 out 32, Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 0

Saisissez la commande suivante :

[root@centos8 ~]# myisamchk -d /var/lib/mysql/ligue1/rencontre /var/lib/mysql/ligue1/equipe

MyISAM file:         /var/lib/mysql/ligue1/rencontre
Record format:       Packed
Character set:       latin1_swedish_ci (8)
Data records:                    6  Deleted blocks:                 0
Recordlength:                   98

table description:
Key Start Len Index   Type
1   2     4   unique  long                 
    6     4           long                 
    10    5           binary               

---------


MyISAM file:         /var/lib/mysql/ligue1/equipe
Record format:       Packed
Character set:       latin1_swedish_ci (8)
Data records:                    4  Deleted blocks:                 0
Recordlength:                  269

table description:
Key Start Len Index   Type
1   2     4   unique  long                 

---------


Total of all 2 MyISAM-files:
Data records:        10   Deleted blocks:         0

mysqlcheck

Le programme mysqlcheck permet d'effectuer la maintenance des tables pendant que le serveur mysqld est en fonctionnement. Il ne peut être utilisé qu'avec des tables au format MyISAM.

Démarrez le serveur mysqld :

[root@centos8 tmp]# systemctl start mariadb

Saisissez la commande suivante :

[root@centos8 ~]# mysqlcheck -u root -p --host=127.0.0.1 ligue1
Enter password: fenestros1
ligue1.equipe                                      OK
ligue1.rencontre                                   OK

La commande mysqlcheck peut prendre plusieurs options. Nous détaillons ici que les principales :

Option Description
-F ou - -fast Ne vérifie que les tables mal fermées
-C ou - -check-only-changed Ne vérifie que les tables ayant subi une modification depuis la dernière vérification
-r ou - -recover Permet de réparer une table
-a ou - -analyze Permet d'analyser une table
-c ou - -check Permet de vérifier une table. Ce'est l'option par défaut
-o ou - -optimize Permet d'optimiser une table
-A ou - -all-databases Permet de traiter toutes les bases de données
-B ou - -databases Permet de spécifier les bases de données à vérifier

Copyright © 2022 Hugh Norris.

Menu