Ceci est une ancienne révision du document !
Table des matières
Version: 2020/01/30 03:29
DBA105 - 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
où
- 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@centos7 ~]# mysqladmin -u root -p create newdb Enter password: fenestros
drop
Cette commande supprime une base de données:
[root@centos7 ~]# 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@centos7 ~]# mysqladmin -u root -p password "fenestros1" Enter password: fenestros
Connectez-vous à MySQL en tant que root en utilisant le nouveau mot de passe :
[root@centos7 ~]# mysql -u root -p mysql Enter password: fenestros1 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 8 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, 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 MariaDB [ligue1]>
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.01 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.01 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.01 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.00 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 (16.70 sec) MariaDB [ligue1]> select BENCHMARK(1000000000, "select * FROM equipe"); +-----------------------------------------------+ | BENCHMARK(1000000000, "select * FROM equipe") | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (16.91 sec) MariaDB [ligue1]> select BENCHMARK(1000000000, "select * FROM equipe"); +-----------------------------------------------+ | BENCHMARK(1000000000, "select * FROM equipe") | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (16.93 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 | +--------------------+ | information_schema | | CarnetAdresses | | Nombres | | ligue1 | | mysql | | performance_schema | | test | +--------------------+ 7 rows in set (0.01 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.01 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 | | performance_schema | events_waits_summary_global_by_event_name | 0 | 0 | | performance_schema | setup_timers | 0 | 0 | | performance_schema | events_waits_history_long | 0 | 0 | | mysql | time_zone_name | 0 | 0 | | mysql | time_zone | 0 | 0 | | performance_schema | events_waits_summary_by_instance | 0 | 0 | | mysql | db | 0 | 0 | | performance_schema | setup_consumers | 0 | 0 | | mysql | help_keyword | 0 | 0 | | mysql | time_zone_transition_type | 0 | 0 | | performance_schema | setup_instruments | 0 | 0 | | mysql | user | 0 | 0 | | mysql | slow_log | 0 | 0 | | performance_schema | file_instances | 0 | 0 | | performance_schema | cond_instances | 0 | 0 | | mysql | plugin | 0 | 0 | | mysql | proc | 0 | 0 | | mysql | proxies_priv | 0 | 0 | | mysql | help_topic | 0 | 0 | | performance_schema | rwlock_instances | 0 | 0 | | mysql | time_zone_transition | 0 | 0 | | mysql | event | 0 | 0 | | mysql | columns_priv | 0 | 0 | | performance_schema | performance_timers | 0 | 0 | | performance_schema | threads | 0 | 0 | | mysql | general_log | 0 | 0 | | performance_schema | events_waits_summary_by_thread_by_event_name | 0 | 0 | | performance_schema | file_summary_by_event_name | 0 | 0 | | mysql | time_zone_leap_second | 0 | 0 | | performance_schema | file_summary_by_instance | 0 | 0 | | ligue1 | rencontre | 0 | 0 | | mysql | servers | 0 | 0 | | mysql | host | 0 | 0 | | performance_schema | events_waits_history | 0 | 0 | | mysql | func | 0 | 0 | | mysql | ndb_binlog_index | 0 | 0 | | performance_schema | mutex_instances | 0 | 0 | | ligue1 | V_EQUIPE | 0 | 0 | | mysql | tables_priv | 0 | 0 | | mysql | procs_priv | 0 | 0 | | performance_schema | events_waits_current | 0 | 0 | | mysql | help_category | 0 | 0 | | mysql | help_relation | 0 | 0 | +--------------------+----------------------------------------------+--------+-------------+ 44 rows in set (0.01 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.00 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.01 sec) MariaDB [ligue1]>
A Faire - Pour plus d'information, voir https://dev.mysql.com/doc/refman/5.6/en/show-columns.html.
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.00 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir https://dev.mysql.com/doc/refman/5.6/en/show-index.html.
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 | +-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+ | V_EQUIPE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | VIEW | | equipe | MyISAM | 10 | Dynamic | 4 | 80 | 320 | 281474976710655 | 2048 | 0 | 5 | 2017-10-31 11:12:25 | 2017-10-31 11:13:16 | NULL | latin1_swedish_ci | NULL | | | | rencontre | MyISAM | 10 | Dynamic | 6 | 30 | 184 | 281474976710655 | 2048 | 0 | NULL | 2017-10-31 10:20:18 | 2017-10-31 11:08:20 | NULL | latin1_swedish_ci | NULL | | | +-----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+ 3 rows in set (0.00 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir https://dev.mysql.com/doc/refman/5.6/en/show-table-status.html.
SHOW STATUS
Cette commande prend la forme suivante :
SHOW STATUS [LIKE '%motif%'];
Par exemple:
MariaDB [ligue1]> SHOW STATUS \G ... *************************** 394. row *************************** Variable_name: Ssl_used_session_cache_entries Value: 0 *************************** 395. row *************************** Variable_name: Ssl_verify_depth Value: 18446744073709551615 *************************** 396. row *************************** Variable_name: Ssl_verify_mode Value: 5 *************************** 397. row *************************** Variable_name: Ssl_version Value: TLSv1.2 *************************** 398. row *************************** Variable_name: Subquery_cache_hit Value: 0 *************************** 399. row *************************** Variable_name: Subquery_cache_miss Value: 0 *************************** 400. row *************************** Variable_name: Syncs Value: 3 *************************** 401. row *************************** Variable_name: Table_locks_immediate Value: 60 *************************** 402. row *************************** Variable_name: Table_locks_waited Value: 0 *************************** 403. row *************************** Variable_name: Tc_log_max_pages_used Value: 0 *************************** 404. row *************************** Variable_name: Tc_log_page_size Value: 0 *************************** 405. row *************************** Variable_name: Tc_log_page_waits Value: 0 *************************** 406. row *************************** Variable_name: Threadpool_idle_threads Value: 0 *************************** 407. row *************************** Variable_name: Threadpool_threads Value: 0 *************************** 408. row *************************** Variable_name: Threads_cached Value: 0 *************************** 409. row *************************** Variable_name: Threads_connected Value: 1 *************************** 410. row *************************** Variable_name: Threads_created Value: 8 *************************** 411. row *************************** Variable_name: Threads_running Value: 1 *************************** 412. row *************************** Variable_name: Uptime Value: 11802 *************************** 413. row *************************** Variable_name: Uptime_since_flush_status Value: 11802 413 rows in set (0.01 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/show-status.html.
SHOW VARIABLES
Cette commande prend la forme suivante :
SHOW [GLOBAL|SESSION] VARIABLES [LIKE '%motif%'];
Par exemple:
MariaDB [ligue1]> SHOW VARIABLES \G ... *************************** 418. row *************************** Variable_name: timed_mutexes Value: OFF *************************** 419. row *************************** Variable_name: timestamp Value: 1509703244.822412 *************************** 420. row *************************** Variable_name: tmp_table_size Value: 16777216 *************************** 421. row *************************** Variable_name: tmpdir Value: /var/tmp *************************** 422. row *************************** Variable_name: transaction_alloc_block_size Value: 8192 *************************** 423. row *************************** Variable_name: transaction_prealloc_size Value: 4096 *************************** 424. row *************************** Variable_name: tx_isolation Value: REPEATABLE-READ *************************** 425. row *************************** Variable_name: unique_checks Value: ON *************************** 426. row *************************** Variable_name: updatable_views_with_limit Value: YES *************************** 427. row *************************** Variable_name: userstat Value: OFF *************************** 428. row *************************** Variable_name: version Value: 5.5.56-MariaDB *************************** 429. row *************************** Variable_name: version_comment Value: MariaDB Server *************************** 430. row *************************** Variable_name: version_compile_machine Value: x86_64 *************************** 431. row *************************** Variable_name: version_compile_os Value: Linux *************************** 432. row *************************** Variable_name: wait_timeout Value: 28800 *************************** 433. row *************************** Variable_name: warning_count Value: 0 433 rows in set (0.01 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/show-variables.html.
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 | +----+------+-----------+--------+---------+------+-------+-------------------+----------+ | 8 | root | localhost | ligue1 | Query | 0 | NULL | SHOW PROCESSLIST | 0.000 | +----+------+-----------+--------+---------+------+-------+-------------------+----------+ 1 row in set (0.00 sec) MariaDB [ligue1]> SHOW FULL PROCESSLIST; +----+------+-----------+--------+---------+------+-------+-----------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+--------+---------+------+-------+-----------------------+----------+ | 8 | root | localhost | ligue1 | Query | 0 | NULL | SHOW FULL PROCESSLIST | 0.000 | +----+------+-----------+--------+---------+------+-------+-----------------------+----------+ 1 row in set (0.01 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/show-processlist.html.
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.00 sec) MariaDB [ligue1]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/show-grants.html.
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.00 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.00 sec) MariaDB [ligue1]>
Important - Notez l'utilisation de \G pour rendre la sortie plus lisible.
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/show-create-table.html.
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 100:
MariaDB [ligue1]> SHOW VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 151 | +-----------------+-------+ 1 row in set (0.00 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.00 sec) MariaDB [ligue1]> SHOW VARIABLES LIKE 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 200 | +-----------------+-------+ 1 row in set (0.00 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.00 sec) MariaDB [ligue1]>
Accordez les privilèges de connexion à l'utilisateur fenestros:
MariaDB [ligue1]> GRANT USAGE ON * TO fenestros@localhost IDENTIFIED BY 'fenestros'; Query OK, 0 rows affected (0.00 sec) 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.00 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@centos7 ~]# mysql -u fenestros -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, 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.00 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 [ligue1]> SHOW PROCESSLIST; +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ | 8 | root | localhost | ligue1 | Query | 0 | NULL | SHOW PROCESSLIST | 0.000 | | 9 | fenestros | localhost | NULL | Sleep | 75 | | NULL | 0.000 | +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ 2 rows in set (0.00 sec) MariaDB [ligue1]>
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 [ligue1]> KILL 9; Query OK, 0 rows affected (0.00 sec) MariaDB [ligue1]> SHOW PROCESSLIST; +----+------+-----------+--------+---------+------+-------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+------+-----------+--------+---------+------+-------+------------------+----------+ | 8 | root | localhost | ligue1 | Query | 0 | NULL | SHOW PROCESSLIST | 0.000 | +----+------+-----------+--------+---------+------+-------+------------------+----------+ 1 row in set (0.00 sec) MariaDB [ligue1]>
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: 10 Current database: *** NONE *** +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.13 sec) MariaDB [(none)]>
Important - Notez que le client se reconnecte au serveur!
Contrôlez maintenant la PROCESSLIST à partir de la connexion de root :
MariaDB [ligue1]> SHOW PROCESSLIST; +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ | 8 | root | localhost | ligue1 | Query | 0 | NULL | SHOW PROCESSLIST | 0.000 | | 10 | fenestros | localhost | NULL | Sleep | 34 | | NULL | 0.000 | +----+-----------+-----------+--------+---------+------+-------+------------------+----------+ 2 rows in set (0.00 sec) MariaDB [ligue1]>
Voici la même commande à partir de la connexion de fenestros :
MariaDB [(none)]> SHOW PROCESSLIST; +----+-----------+-----------+------+---------+------+-------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+-----------+-----------+------+---------+------+-------+------------------+----------+ | 10 | fenestros | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST | 0.000 | +----+-----------+-----------+------+---------+------+-------+------------------+----------+ 1 row in set (0.00 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:
mysql> FLUSH HOSTS; [Entrée]
FLUSH LOGS
Cette commande ferme les fichiers de logs et crée de nouveaux:
mysql> FLUSH LOGS; [Entrée]
FLUSH PRIVILEGES
Cette commande recharge la table de privileges:
mysql> FLUSH PRIVILEGES; [Entrée]
FLUSH TABLES
Cette commande vide les caches des tables et les ferme:
mysql> FLUSH TABLES; [Entrée]
En cas de tables multiples, il convient d'utiliser la commande suivante:
mysql> 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 [ligue1]> 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 | +---------------------------------------+ | CHARACTER_SETS | | CLIENT_STATISTICS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | ENGINES | | EVENTS | | FILES | | GLOBAL_STATUS | | GLOBAL_VARIABLES | | INDEX_STATISTICS | | KEY_CACHES | | KEY_COLUMN_USAGE | | PARAMETERS | | PARTITIONS | | PLUGINS | | PROCESSLIST | | PROFILING | | REFERENTIAL_CONSTRAINTS | | ROUTINES | | SCHEMATA | | SCHEMA_PRIVILEGES | | SESSION_STATUS | | SESSION_VARIABLES | | STATISTICS | | TABLES | | TABLESPACES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TABLE_STATISTICS | | TRIGGERS | | USER_PRIVILEGES | | USER_STATISTICS | | VIEWS | | INNODB_CMPMEM_RESET | | INNODB_RSEG | | INNODB_UNDO_LOGS | | INNODB_CMPMEM | | INNODB_SYS_TABLESTATS | | INNODB_LOCK_WAITS | | INNODB_INDEX_STATS | | INNODB_CMP | | INNODB_CMP_RESET | | INNODB_CHANGED_PAGES | | INNODB_BUFFER_POOL_PAGES | | INNODB_TRX | | INNODB_BUFFER_POOL_PAGES_INDEX | | INNODB_LOCKS | | INNODB_BUFFER_POOL_PAGES_BLOB | | INNODB_SYS_TABLES | | INNODB_SYS_FIELDS | | INNODB_SYS_COLUMNS | | INNODB_SYS_STATS | | INNODB_SYS_FOREIGN | | INNODB_SYS_INDEXES | | XTRADB_ADMIN_COMMAND | | INNODB_TABLE_STATS | | INNODB_SYS_FOREIGN_COLS | | INNODB_BUFFER_PAGE_LRU | | INNODB_BUFFER_POOL_STATS | | INNODB_BUFFER_PAGE | +---------------------------------------+ 62 rows in set (0.00 sec) MariaDB [information_schema]>
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
Les programmes MySQL Administrator et MySQL Query Browser sont deux logiciels graphiques MySQL historiquement disponibles pour plusieurs plate-formes. Comme son nom l'indique MySQL Administrator vous assiste dans les tâches d'administration. MySQL Query Browser permet, quant à lui, d'écrire des commandes et de les tester.
Téléchargez mysql-gui-tools-5.0r12-rhel4-i386.tar.gz de la section Fichiers de ce cours puis transférez ensuite le fichier sur votre VM, par exemple sous une machine hôte Linux :
hnorris@hnorris-E200HA:~/Downloads$ scp -P 5022 mysql-gui-tools-5.0r12-rhel4-i386.tar.gz trainee@localhost:/tmp trainee@localhost's password: trainee mysql-gui-tools-5.0r12-rhel4-i386.tar.gz 100% 18MB 13.4MB/s 00:01
Installez maintenant le paquet :
MariaDB [information_schema]> exit Bye [root@centos7 ~]# cd /tmp [root@centos7 tmp]# tar xvf mysql-gui-tools-5.0r12-rhel4-i386.tar.gz mysql-administrator-5.0r12-1rhel4.i386.rpm mysql-gui-tools-5.0r12-1rhel4.i386.rpm mysql-migration-toolkit-5.0r12-1rhel4.i386.rpm mysql-query-browser-5.0r12-1rhel4.i386.rpm [root@centos7 tmp]# [root@centos7 ~]# yum localinstall mysql-gui-tools-5.0r12-1rhel4.i386.rpm mysql-administrator-5.0r12-1rhel4.i386.rpm mysql-migration-toolkit-5.0r12-1rhel4.i386.rpm mysql-query-browser-5.0r12-1rhel4.i386.rpm --nogpgcheck --skip-broken
MySQL Administrator et de MySQL Query Browser ont été remplacés par un nouveau logiciel appelé MySQL Workbench de la société Oracle.
A faire - Passez votre VM en démarrage graphique et re-bootez. Testez MySQL Administrator et MySQL Query Browser.
Pour passer votre VM en mode graphique, utilisez les commandes suivantes :
[root@centos7 ~]# locate default.target /etc/systemd/system/default.target /etc/systemd/system/default.target.wants /etc/systemd/system/default.target.wants/systemd-readahead-collect.service /etc/systemd/system/default.target.wants/systemd-readahead-replay.service /usr/lib/systemd/system/default.target /usr/lib/systemd/system/default.target.wants /usr/lib/systemd/user/default.target [root@centos7 ~]# ls -l /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 37 Apr 30 2016 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target [root@centos7 ~]# rm -rf /etc/systemd/system/default.target [root@centos7 ~]# ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target [root@centos7 ~]# ls -l /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 36 Dec 11 05:59 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target [root@centos7 ~]# shutdown -h now
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@centos7 tmp]# mysql -u root -p Enter password: fenestros1 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, 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.14 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.00 sec) MariaDB [(none)]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/check-table.html.
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.42 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.
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/repair-table.html.
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.00 sec) MariaDB [(none)]>
A faire - Pour plus d'information, voir http://dev.mysql.com/doc/refman/5.6/en/optimize-table.html.
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.00 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@centos7 tmp]# systemctl stop mariadb [root@centos7 tmp]#
Saisissez ensuite la commande suivante pour vérifier tous les index de la base ligue1 :
[root@centos7 tmp]# 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@centos7 tmp]# 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.01 Maximum resident set size 2104, Integral resident set size 0 Non-physical pagefaults 623, Physical pagefaults 0, Swaps 0 Blocks in 0 out 32, Messages in 0 out 0, Signals 0 Voluntary context switches 1, Involuntary context switches 0
Saisissez la commande suivante :
[root@centos7 tmp]# 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: 101 table description: Key Start Len Index Type 1 2 4 unique long 6 4 long 10 8 ulonglong --------- 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@centos7 tmp]# systemctl start mariadb
Saisissez la commande suivante :
[root@centos7 tmp]# mysqlcheck -u root -p --host=127.0.0.1 ligue1 Enter password: fenestros 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 |
<html> <center> Copyright © 2011-2017 I2TCH LIMITED. </center> </html>