Prérequis

Debian 9.5 fraichement installé

Configuration TCP/IP opérationnelle

 

Etape :

 1) Installation docker

 2) Installation docker-compose

 3) Installation portainer

 4) Installation mariadb via portainer

 5) Installation phpmyadmin a la main

 6) Création des comptes enseignants et etudiants dans mariadb pour les travaux pratiques

 

 Désinstaller les anciennes versions de Docker

# apt-get -y remove docker docker-engine docker.io

 

Installation de docker

# apt-get install -y apt-transport-https ca-certificates wget software-properties-common

# wget https://download.docker.com/linux/debian/gpg

# apt-key add gpg

# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list

# apt-get update

# apt-cache policy docker-ce

# apt-get -y install docker-ce

 

Démarrer le service Docker

# systemctl start docker

 

Controler l’état du service Docker

# systemctl status docker

 

Activer le démarrage automatique du service Docker à chaque redémarrage du système

# systemctl enable docker

 

Tester l’arrêt du service Docker

# systemctl stop docker

 

Tester le démarrage du service Docker

# systemctl restart docker

 

Vérifier le status du service Docker

# docker ps

 

Autoriser à l’utisateur ausmane de démarrer le service Docker

# usermod -aG docker ausmane

 

2) Installation de docker-composer

# apt-get install curl

# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# chmod +x /usr/local/bin/docker-compose

# docker-compose --version

 

3) Installation de portainer ssl

# docker pull portainer/portainer

# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

portainer/portainer latest 00ead811e8ae 4 weeks ago 58.7MB

# mkdir /etc/ssl/portainer && cd /etc/ssl/portainer

# openssl genrsa -out portainer.key 1024

# sudo openssl x509 -req -days 999 -in portainer.csr -signkey portainer.key -out portainer.crt

# mkdir ~/portainer && sudo cp /etc/ssl/portainer/* ~/portainer

# docker run --name portainer_with_SSL -d -p 443:9000 -v ~/portainer:/certs -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key

 

Configuration de portainer

RM : Lors de la première connexion, il vous sera demandé de créer le mot de passe de l'utilisateur admin

1) https://IPSERVER/ -> OK

Login : admin

passwd :

1) Connexion local

3) Manage the local Docker environnement

4) Cliquer sur Dashboard

5) Modifier la langue

6) Créer le container mariadb via portainer

Name : mariadb_ptu

root password :

nifty_booth

Restart : Always

Idem pour portainer -> Restart : Always

 

4) Créer le container mariadb via portainer

1) https://192.168.17.15/ -> OK

Login : admin

passwd : alcd

1) Connexion local

3) Manage the local Docker environnement

4) Cliquer sur Dashboard

5) Modifier la langue

6) Créer le container mariadb via portainer

Name : gracious_ptolemy

root password : alcd

nifty_booth

Restart : Always

 

 

Vérifier le status du service Docker

# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

4a3db54c4b5f mysql:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 33060/tcp, 0.0.0.0:32768->3306/tcp gracious_ptolemy

 

c085b55867df portainer/portainer "/portainer --ssl --…" 28 minutes ago Up 26 minutes 0.0.0.0:443->9000/tcp portainer_with_SSL

 

RM : Noter bien le CONTAINER ID (4a3db54c4b5f) et Le NAMES(gracious_ptolemy) du container mariadb

 

Se connecter sur le container mariadb_ptu en mode commande

# docker exec -it gracious_ptolemy bash

root@4a3db54c4b5f:/#

 

Sécuriser mariadb

root@4a3db54c4b5f:/# mysql_secure_installation

Change the root password? [Y/n] n

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

 

Créer un utilisateur ausmane dans mariadb

# mysql -u root -p

MariaDB [(none)]> grant all privileges on *.* to ausmane@"%"; identified by 'alcd' with grant option;

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> exit

 

5) Installation du container phpmyadmin en mode commande

# docker run --name myadmin -d --link mariadb_ptu:db -p 8080:80 phpmyadmin/phpmyadmin

 

Vérifier le status du service Docker

# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

cf12234182f0 phpmyadmin/phpmyadmin "/run.sh supervisord…" 12 seconds ago Up 12 seconds 9000/tcp, 0.0.0.0:8080->80/tcp myadmin

 

4a3db54c4b5f mysql:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 33060/tcp, 0.0.0.0:32768->3306/tcp gracious_ptolemy

 

c085b55867df portainer/portainer "/portainer --ssl --…" 28 minutes ago Up 26 minutes 0.0.0.0:443->9000/tcp portainer_with_SSL

 

Tester la connexion phpmyadmin

http://192.168.17.15:8080/ -> ok

Login : ausmane

passwd : alcd

 

Tester la connexion portainer

https://192.168.17.15/ -> ok

Login : admin

passwd : alcd

 

Tester la connexion a mariadb a partir d’un client linux distant

# apt-get install mariadb-client

 

# mysql –host=192.168.17.15 --port=32768 mysql -u ausmane -p

Enter password:alcd

MariaDB [mysql]> show DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

+--------------------+

3 rows in set (0.01 sec)

MariaDB [mysql]> exit

 

6) Créer le compte enseignant et etudiants pour les travaux pratiques Mariadb

Se connecter sur le container gracious_ptolemy en mode commande

# docker exec -it gracious_ptolemy bash

#

 

Créer un compte administrateur de mariadb

# mysql -u root -p

Enter password: alc

MariaDB [(none)]> grant all privileges on *.* to 'adminmariadb'@'%' identified by 'alcd' with grant option;

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> exit

 

Créer via un script mysql des bases de données et les comptes enseignants avec les droits

Créer le script db_enseignant.sql pour la base de données enseignants

# vi db_enseignant.sql

-- CREATE DATABASE dbenseignant;

CREATE DATABASE dbenseignant;

 

Insérer la base de données enseignant avec un script db_enseignant.sql

# mysql -u root -p < db_enseignant.sql

Enter password:alcd

 

Créer le script user_enseignant.sql pour le compte enseignant

# vi user_enseignant.sql

USE mysql;
grant all privileges on dbenseignant.* to enseignant@"%"; identified by 'alcd' with grant option;

 

Insérer le compte enseignant dans la base de données avec un script user_enseignant.sql

# mysql -u root -p < user_enseignant.sql

Enter password:alcd

 

Créer le script db_etudiants.sql pour la base de données etudiants

# vi db_etudiants.sql

-- CREATE DATABASE dbetudiants;
CREATE DATABASE dbuser1;
CREATE DATABASE dbuser2;
CREATE DATABASE dbuser3;
CREATE DATABASE dbuser4;
CREATE DATABASE dbuser5;
CREATE DATABASE dbuser6;
CREATE DATABASE dbuser7;
CREATE DATABASE dbuser8;
CREATE DATABASE dbuser9;

CREATE DATABASE dbuser10;

 

Insérer la base de données eetudiants avec un script db_etudiants.sql

# mysql -u root -p < db_etudiants.sql

Enter password:alcd

 

Créer le script user_etudiants.sql pour le compte etudiants

# vi user_etudiantst.sql

USE mysql;
grant all privileges on dbuser1.* to user1@"%"; identified by 'puser1' with grant option;

grant all privileges on dbuser2.* to user2@"%"; identified by 'puser2' with grant option;

grant all privileges on dbuser3.* to user3@"%"; identified by 'puser3' with grant option;

grant all privileges on dbuser4.* to user4@"%"; identified by 'puser4' with grant option;

grant all privileges on dbuser5.* to user5@"%"; identified by 'puser5' with grant option;

grant all privileges on dbuser6.* to user6@"%"; identified by 'puser6' with grant option;

grant all privileges on dbuser7.* to user7@"%"; identified by 'puser7' with grant option;

grant all privileges on dbuser8.* to user8@"%"; identified by 'puser8' with grant option;

grant all privileges on dbuser9.* to user9@"%"; identified by 'puser9' with grant option;

grant all privileges on dbuser10.* to user10@"%"; identified by 'puser10' with grant option;

 

Insérer les comptes etudiants dans la base de données avec un script user_etudiants.sql

# mysql -u root -p < user_etudiants.sql

Enter password:alcd

 

Donner le droit aux enseignants sur toutes les bases de tous les étudiants

# vi droits_enseignant_db_etudiants.sql

USE mysql;
grant all privileges on dbuser1.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser2.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser3.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser4.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser5.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser6.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser7.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser8.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser9.* to enseignant@"%"; identified by 'alcd' with grant option;

grant all privileges on dbuser10.* to enseignant@"%"; identified by 'alcd' with grant option;

 

Insérer le script droits_enseignant_db_etudiants.sql dans la base de données

# mysql -u root -p < droits_enseignant_db_etudiants.sql

Enter password:alcd

 

Tester la connexion phpmyadmin

http://192.168.17.15:8080/

Login : adminmariadb

passwd : alcd

http://10.234.17.15:8080/

login : enseignant

password : alcd

http://10.234.17.15:8080/

login : user1

password : puser1

 

Tester la connexion au serveur mariadb avec le mode commande

# mysql –host=192.168.17.15 --port=32768 mysql -u adminmariadb -p

Enter password:alcd

MariaDB [mysql]> show DATABASES;

# mysql –host=192.168.17.15 --port=32768 mysql -u enseignant -p

Enter password:alcd

MariaDB [mysql]> show DATABASES;

# mysql –host=192.168.17.15 --port=32768 mysql -u user1 -p

Enter password:puser1

MariaDB [mysql]> show DATABASES;