MySQL Administration

Démarrer et arrêter le serveur MySQL

Sur un système Windows

Démarrer le serveur MySQL :

1, Via l'outil de gestion « Services » :Ouvrez la boîte de dialogue Exécuter (Win + R), saisissezservices.msc, recherchez le service « MySQL », faites un clic droit et sélectionnez « Démarrer ».

2. Via l'invite de commandes :Ouvrez l'invite de commandes (en tant qu'administrateur), saisissez la commande suivante :

net start mysql

Arrêter le serveur MySQL :

1, Via l'outil de gestion « Services » :De même, ouvrez la boîte de dialogue Exécuter, saisissez services.msc, recherchez le service « MySQL », faites un clic droit et sélectionnez « Arrêter ».

2, Via l'invite de commandes :Ouvrez l'invite de commandes (en tant qu'administrateur), saisissez la commande suivante :

net stop mysql

Sur un système Linux

1. Démarrer le service MySQL :

Utilisez la commandesystemd(applicable à la plupart des distributions Linux modernes, telles qu'Ubuntu, CentOS, etc.) :

sudo systemctl start mysql

Utilisez la commandeservice(dans certaines distributions plus anciennes) :

sudo service mysql start

2. Arrêter le service MySQL :

En utilisant systemd :

sudo systemctl stop mysql

En utilisant la commande service :

sudo service mysql stop

3. Redémarrer le service MySQL :

En utilisant systemd :
sudo systemctl restart mysql

En utilisant la commande service :

sudo service mysql restart

4. Vérifier l'état du service MySQL :

Utilisation de la commande systemd :

sudo systemctl status mysql

En utilisant la commande service :

sudo service mysql status

Système Mac OS

Démarrer le service MySQL :

Utilisation de la ligne de commande :

sudo /usr/local/mysql/support-files/mysql.server start

Arrêter le service MySQL :

Utilisation de la ligne de commande :

sudo /usr/local/mysql/support-files/mysql.server stop

Redémarrer le service MySQL :

Utilisation de la ligne de commande :

sudo /usr/local/mysql/support-files/mysql.server restart

Vérifier l'état du service MySQL :

Utilisation de la ligne de commande :

sudo /usr/local/mysql/support-files/mysql.server status

Dans les commandes ci-dessus, mysql peut varier en raison de chemins d'installation ou de versions différents.

Sur Mac OS, le chemin d'installation de MySQL est généralement /usr/local/mysql/, vous devez donc utiliser le script mysql.server dans ce chemin pour démarrer et arrêter le service MySQL.


Paramètres utilisateur MySQL

Dans MySQL, les paramètres utilisateur incluent des opérations telles que la création d'utilisateurs, la définition de privilèges et la gestion des utilisateurs. Voici quelques opérations courantes de paramétrage des utilisateurs MySQL, notamment la création d'utilisateurs, la définition de privilèges, l'affichage et la suppression d'utilisateurs, etc.

Créer un utilisateur

Pour créer un nouvel utilisateur, vous pouvez utiliser la commande SQL suivante :

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username: nom d'utilisateur.
  • host: spécifie les hôtes à partir desquels l'utilisateur peut se connecter. Par exemple,localhostautorise uniquement les connexions locales,%autorise les connexions depuis n'importe quel hôte.
  • password: le mot de passe de l'utilisateur.

Exemple

CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123';

Accorder des privilèges

Après avoir créé un utilisateur, vous devez lui accorder des privilèges d'accès. Utilisez la commandeGRANTpour accorder des privilèges :

GRANT privileges ON database_name.* TO 'username'@'host';

  • privileges: les privilèges requis, tels queALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETEetc.
  • database_name.*: indique l'attribution de privilèges sur une base de données ou une table.database_name.*signifie accorder des privilèges sur toutes les tables de la base de données entière,database_name.table_namesignifie accorder des privilèges sur la table spécifiée.
  • TO 'username'@'host': spécifie l'utilisateur et l'hôte auxquels les privilèges sont accordés.

Exemple

GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';

Rafraîchir les privilèges

Après avoir accordé ou révoqué des privilèges, vous devez rafraîchir les privilèges pour que les modifications prennent effet :

FLUSH PRIVILEGES;

Afficher les privilèges d'un utilisateur

Pour afficher les privilèges d'un utilisateur spécifique, vous pouvez utiliser la commande suivante :

SHOW GRANTS FOR 'username'@'host';

Exemple

SHOW GRANTS FOR 'john'@'localhost';

Révoquer les privilèges

Pour révoquer les privilèges d'un utilisateur, utilisez la commande REVOKE :

REVOKE privileges ON database_name.* FROM 'username'@'host';

Exemple

REVOKE ALL PRIVILEGES ON test_db.* FROM 'john'@'localhost';

Supprimer un utilisateur

Pour supprimer un utilisateur, vous pouvez utiliser la commande suivante :

DROP USER 'username'@'host';

Exemple

DROP USER 'john'@'localhost';

Modifier le mot de passe d'un utilisateur

Pour modifier le mot de passe d'un utilisateur, vous pouvez utiliser la commande ALTER USER :

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

Exemple

ALTER USER 'john'@'localhost' IDENTIFIED BY 'newpassword456';

Modifier l'hôte de l'utilisateur

Pour modifier l'hôte de l'utilisateur (c'est-à-dire quels hôtes sont autorisés à se connecter), vous pouvez d'abord supprimer l'utilisateur, puis recréer un nouvel utilisateur.

Exemple

-- Supprimer l'ancien utilisateur
DROP USER 'john'@'localhost';

-- Recréer l'utilisateur et spécifier le nouvel hôte
CREATE USER 'john'@'%' IDENTIFIED BY 'password123';

Spécifier les privilèges lors de la création d'un utilisateur

Lors de la création d'un utilisateur, vous pouvez également accorder des privilèges en même temps (MySQL 8.0.16 et supérieur) :

Exemple

CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';

Configuration du fichier /etc/my.cnf

Le fichier /etc/my.cnf est le fichier de configuration MySQL utilisé pour configurer divers paramètres et options du serveur MySQL.

En général, vous n'avez pas besoin de modifier ce fichier de configuration. La configuration par défaut de ce fichier est la suivante :

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Dans le fichier de configuration, vous pouvez spécifier le répertoire de stockage des différents fichiers journaux d'erreurs. Généralement, vous n'avez pas besoin de modifier ces configurations.

Le fichier /etc/my.cnf peut varier selon les systèmes et les versions de MySQL, mais inclut généralement les sections suivantes :

1. Paramètres de base

  • basedir: Le répertoire d'installation de base du serveur MySQL.
  • datadir: L'emplacement où sont stockés les fichiers de données MySQL.
  • socket: Chemin du fichier de socket Unix du serveur MySQL.
  • pid-file: Chemin du fichier qui stocke l'identifiant de processus du serveur MySQL en cours d'exécution.
  • port: Numéro de port sur lequel le serveur MySQL écoute, par défaut 3306.

2. Options du serveur

  • bind-address: Spécifie l'adresse IP sur laquelle le serveur MySQL écoute ; peut être une adresse IP ou un nom d'hôte.
  • server-id: Dans la configuration de réplication, définit un identifiant unique pour chaque serveur MySQL.
  • default-storage-engine: Le moteur de stockage par défaut, par exemple InnoDB ou MyISAM.
  • max_connections: Le nombre maximal de connexions que le serveur peut maintenir simultanément.
  • thread_cache_size: La taille du cache de threads, utilisée pour améliorer la vitesse de démarrage des nouvelles connexions.
  • query_cache_size: La taille du cache de requêtes, utilisée pour améliorer l'efficacité des requêtes identiques.
  • default-character-set: Le jeu de caractères par défaut.
  • collation-server: L'interclassement par défaut du serveur.

3. Optimisation des performances

  • innodb_buffer_pool_size: La taille du pool de mémoire tampon du moteur de stockage InnoDB ; il s'agit de l'un des paramètres les plus importants pour l'optimisation des performances d'InnoDB.
  • key_buffer_size: La taille du tampon de clés du moteur de stockage MyISAM.
  • table_open_cache: Le nombre de caches de tables pouvant être ouverts simultanément.
  • thread_concurrency: Le nombre de threads autorisés à s'exécuter simultanément.

4. Paramètres de sécurité

  • skip-networking: Empêche le serveur MySQL d'écouter les connexions réseau, n'autorisant que les connexions locales.
  • skip-grant-tables: Démarre le serveur MySQL sans demander de mot de passe ; ceci est généralement utilisé pour récupérer un mot de passe root oublié, mais cela présente un risque de sécurité.
  • auth_native_password=1: Active l'authentification par mot de passe native pour MySQL 5.7 et versions supérieures.

5. Paramètres de journalisation

  • log_error: Le chemin d'accès au fichier journal des erreurs.
  • general_log: Journalise toutes les connexions client et toutes les requêtes.
  • slow_query_log: Journalise les requêtes lentes dont le temps d'exécution dépasse un seuil spécifique.
  • log_queries_not_using_indexes: Journalise les requêtes qui n'utilisent pas d'index.

6. Paramètres de réplication

  • master_hostetmaster_user: L'adresse du serveur maître et de l'utilisateur de réplication.
  • master_password: Le mot de passe de l'utilisateur de réplication.
  • master_log_fileetmaster_log_pos: Le fichier journal et la position utilisés pour la réplication.

Commandes pour gérer MySQL

Ci-dessous figurent les commandes couramment utilisées pour exploiter une base de données MySQL.

  • USE Nom de la base de données :
    Sélectionnez la base de données MySQL sur laquelle travailler. Après avoir utilisé cette commande, toutes les commandes MySQL ne cibleront que cette base de données.

    mysql> use EXAMPLE;
    Database changed
    
  • SHOW DATABASES:
    Liste les bases de données du système de gestion de bases de données MySQL.

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | EXAMPLE             |
    | cdcol              |
    | mysql              |
    | onethink           |
    | performance_schema |
    | phpmyadmin         |
    | test               |
    | wecenter           |
    | wordpress          |
    +--------------------+
    10 rows in set (0.02 sec)
    
  • SHOW TABLES:
    Afficher toutes les tables de la base de données spécifiée. Avant d'utiliser cette commande, vous devez utiliser la commande use pour sélectionner la base de données sur laquelle opérer.

    mysql> use EXAMPLE;
    Database changed
    mysql> SHOW TABLES;
    +------------------+
    | Tables_in_example |
    +------------------+
    | employee_tbl     |
    | example_tbl       |
    | tcount_tbl       |
    +------------------+
    3 rows in set (0.00 sec)
    
  • SHOW COLUMNS FROM Table de données:
    Afficher les attributs, les types d'attributs, les informations sur la clé primaire, si elle est NULL, les valeurs par défaut et d'autres informations de la table de données.

    mysql> SHOW COLUMNS FROM example_tbl;
    +-----------------+--------------+------+-----+---------+-------+
    | Field           | Type         | Null | Key | Default | Extra |
    +-----------------+--------------+------+-----+---------+-------+
    | example_id       | int(11)      | NO   | PRI | NULL    |       |
    | example_title    | varchar(255) | YES  |     | NULL    |       |
    | example_author   | varchar(255) | YES  |     | NULL    |       |
    | submission_date | date         | YES  |     | NULL    |       |
    +-----------------+--------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    
  • SHOW INDEX FROM Table de données:
    Afficher les informations détaillées sur les index de la table de données, y compris PRIMARY KEY.

    mysql> SHOW INDEX FROM example_tbl;
    +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | Table      | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
    +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | example_tbl |          0 | PRIMARY  |            1 | example_id   | A         |           2 |     NULL | NULL   |      | BTREE      |         |               |
    +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    1 row in set (0.00 sec)
    
  • SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] \G:
    Cette commande affichera des informations de performance et de statistiques du système de gestion de base de données MySQL.

    mysql> SHOW TABLE STATUS  FROM EXAMPLE;   # 显示数据库 EXAMPLE 中所有表的信息
    
    mysql> SHOW TABLE STATUS from EXAMPLE LIKE 'example%';     # 表名以example开头的表的信息
    mysql> SHOW TABLE STATUS from EXAMPLE LIKE 'example%'\G;   # 加上 \G,查询结果按列打印
    

Démonstration GIF :

Autres extensions