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).
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';
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 :
GRANT SELECT ON mabase.* TO 'johndoe'@'localhost';
REVOKE SELECT ON mabase.* FROM 'johndoe'@'localhost';
Voici la liste des privilèges pris en charge par MySQL :
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...
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 :
La définition des colonnes respecte le format suivant :
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
column_name
: nom de la colonne, unique pour chaque table bien évidemment.data_type(length)
: type de données de la colonne avec éventuellement une longueur. VARCHAR(255) ou INT(10) par exemple.Not NULL
: indique que la colonne ne pourra pas contenir de valeur indéfinie.Default value
: Peut définir une valeur par défaut lors de la création si celle-ci n'est pas précisée à l'ajout du tupleAUTO_INCREMENT
: permet d'incrémenter automatiquement de 1 à chaque ajout de tuple. Pratique pour les ID par exemple.price DECIMAL(10,2) NOT NULL CHECK (price >= 0)
Primary Key(col1, col2, ...)
Parmi les types de données pouvant être insérés :
YYYY-MM-DD HH:MM:SS
.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 | |
+----------------+--------------+------+-----+---------+----------------+
show databases;