GERBELOTBARILLON.COM

Parce qu'il faut toujours un commencement...

Toutes les opérations réalisées dans les lignes ci-dessous seront effectuées depuis le shell interactif, moyen simple et rapide de lancer des commandes mysql. Pour cela, depuis une commande MS-DOS, tapez
mysql -u root -p
et saisissez le mot de passe du compte root, celui-ci étant par défaut le seul autorisé à se connecter (équivalent sa pour SQL Server).

Créer un utilisateur

Les utilisateurs sont stockés dans la table système mysql.user. Pour afficher la liste des utilisateurs déclarés sur votre serveur MySQL, il suffit de faire

SELECT user, host FROM mysql.user;

Pour créer un utilisateur nommé "johndoe" avec le mot de passe "johnpass" il suffit de taper la commande suivante dans le shell mysql :

CREATE USER 'johndoe'@'localhost' IDENTIFIED BY 'johnpass';
Pour supprimer un utilisateur c'est aussi simple
DROP USER 'johndoe'@'localhost';

Permissions des utilisateurs

L'affectation de permissions peut se faire en mode granulaire, en ciblant une ou plusieurs actions possibles sur les objets des bases ou bien en bloc en donnant tous les privilèges en une seule fois. Par exemple, pour donner tous les droits à l'utilisateur 'johndoe' sur toutes les tables de la base 'mabase' :

GRANT ALL PRIVILEGES ON mabase.* TO 'johndoe'@'localhost'
La définition de 'localhost' fait référence au serveur sur lequel nous sommes actuellement connectés. Il serait possible de définir également des droits sur des serveurs distants en spécifiant leur IP ou leur nom DNS.

La gestion des permissions utilise les commandes suivantes :

Voici la liste des privilèges pris en charge par MySQL :

Créer une base de données

Pour créer une base de données, en vérifiant en même temps si elle n'existe pas déjà.

CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name]
Les éléments entre [ ] sont optionnels et s'ils ne sont pas spécifiés MySQL générera la base de données avec les paramètres par défaut du serveur sur lequel MySQL est installé.
mysql> create database tuto;
Query OK, 1 row affected (0.01 sec)
Pour connaître les paramètres de la base nouvellement créée :
mysql> show create database tuto;
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| tuto     | CREATE DATABASE `tuto` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Une fois les étapes de créations réalisées, il ne reste qu'à utiliser la base par
mysql> use tuto;
Database changed
Votre schéma de base de données est maintenant pointé sur la base en cours d'utilisation. Pour information, la notion de schéma est parfois peu claire (ce n'est pas peu dire). Pour faire simple, sachez que, sur MySQL, le schéma est le nom de la base de données...

Créer une table

La syntaxe de base de création d'une table est la suivante :

CREATE TABLE [IF NOT EXISTS] table_name(
   column_1_definition,
   column_2_definition,
   ...,
   table_constraints
) ENGINE=storage_engine;
La notion de storage engine regroupe un certain nombre de moteurs de gestion des tables. Le moteur courant est InnoDB mais il peut être choisi parmi les suivants, chacun ayant des avantages et inconvénients : Cela va permettre de créer une table, si le nom n'existe pas déjà, et chaque colonne de la table va être définie selon un format spécifique en fonction du type de données à manipuler. Si le moteur n'est pas défini, cela sera InnoDB par défaut.

La définition des colonnes respecte le format suivant :

column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
Les contraintes de chaque ligne peuvent mentionner :

Parmi les types de données pouvant être insérés :

Exemple de table mixant les différents éléments :
mysql> create table dates (
    -> code int auto_increment primary key,
    -> start_date date,
    -> created_at timestamp,
    -> status tinyint,
    -> description text,
    -> current_time timestamp default current_timestamp
    -> );

Exemple de création d'une table :

mysql> create table CLIENT (
    -> codeclient int auto_increment primary key,
    -> societe varchar(255) NOT NULL,
    -> GUID VARCHAR(255) NOT NULL,
    -> dateabonnement varchar(13)
    -> );
Query OK, 0 rows affected, 1 warning (0.03 sec)
Pour afficher la structure de la table, la commande desc permet de décrire (describe) les champs qui la composent :
mysql> desc CLIENT;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| codeclient     | int          | NO   | PRI | NULL    | auto_increment |
| societe        | varchar(255) | NO   |     | NULL    |                |
| GUID           | varchar(255) | NO   |     | NULL    |                |
| dateabonnement | varchar(13)  | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+

Lister les bases de données

show databases;

https://dev.mysql.com/