Lors de l’utilisation de Docker et plus précisément avec Mariadb sous docker-compose, j’ai eu besoin de créer un utilisateur et une table. Voici le procédé.
Dans notre répertoire de travail, on lance docker avec la commande ‘docker-compose up’ puis on se connecte au container en utilisant:
docker exec -it <NOM CONTAINER> /bin/sh
Le prompt s’est transformé en # , on est dans le container. Maintenant on tape:
mysql -p
On saisit le mot de passe de root. Le prompt a changé en ‘MariaDB [(none)]>’. Nous allons ajouter un nouvel utilisateur.
On sélectionne la base de données mysql qui contient les configurations des BDD:
use mysql;
Et on entre la commande pour créer un nouvel utilisateur.
create user 'user' identified by 'password';
Maintenant que le nouvel utilisateur est ajouté, on lui donne des droits. Ici je n’ai donné à l’utilisateur que les droits de consultation, d’insertion, de modification et de suppression sur une seule base de données, celle que j’instancie dans le docker-compose.yml.
Dans un premier temps, je supprime tous les droits qui sont associés à l’utilisateur. Puis j’ajoute les nouveaux droits:
revoke all privileges, grant option from 'user'@'%'; grant select, insert, update, delete on `my_database`.* to `user`@`%`;
Changeons de base données pour créer une table. (Cette table est juste une table de test que j’ai remplie avec des données totalement fausses.)
# changement de BDD use my_database; # Création de la table create table utilisateur ( id int not null auto_increment primary key, nom varchar (50) , prenom varchar (50), date_naissance date, pays varchar (50), ville varchar (50), cp int (5) ) ;
Pour ajouter de nouvelles lignes dans la table on peut utiliser l’utilisateur précédemment ajouté, ce qui permet de vérifier si les droits sont corrects:
insert into utilisateur (nom, prenom, date_naissance, pays, ville, cp) values ('NOM', 'PRENOM', 'AAAA-MM-JJ', 'PAYS', 'VILLE', '12345');
On saisit ainsi quelques tuples que l’on peut ensuite supprimer ou modifier, toujours dans le but de vérifier les droits de l’utilisateur.