> For the complete documentation index, see [llms.txt](https://docs.glassworks.tech/sgbdr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.glassworks.tech/sgbdr/setup-initial/015-connexion.md).

# Connexion

On utilise une application dite "client" qui va se connecter à la base et lui faire des interrogations.

Il y a plusieurs façons de se connecter à la base locale qu'on vient de créer.

## Client Shell : mysql via docker

Par défaut, toutes les installations de MySQL (et donc MariaDB) viennent avec un client qui s'appelle **mysql**. Ce client permet d'ouvrir un interprète et envoyer de commandes au SGBDR.

Nous pouvons, sans rien installer, établir une connexion au SGBDR en ouvrant un shell interactif au Container, et en lançant la commande :

D'abord, identifiez bien le ID de votre Container Mariadb :

```bash
docker container ls
```

Une fois repéré l'ID du container (dans mon exemple, le ID est `794b579cd610`) :

```
docker exec -it 794b579cd610 mysql -u root -p
```

<figure><img src="https://2009031458-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRDoAPzYMcmOsCu8dxxWU%2Fuploads%2Fy82kZaiNSMEfAiQlsHbg%2Fimage.png?alt=media&amp;token=76b47ec8-3c68-4224-a831-3458009d5119" alt=""><figcaption></figcaption></figure>

## Client Shell : My CLI

Si vous êtes sur Linux ou MacOS, vous pouvez utiliser un client SHELL pour SQL. Par exemple : <https://www.mycli.net>

Il suffit de lancer l'interprète SQL avec les coordonnées de connexion de votre SGBDR.

J'ai déjà installé le client `mycli` dans le Container pour les supports de ce cours. Il faudrait lancer VSCode dans le container, et dans le terminal, vous pouvez exécuter la commande suivante :

```bash
 mycli -h mon_sgbdr -u root
```

Les options sont :

* -h : Le nom d'hôte de la machine qui a votre SGBDR, ou l'adresse IP
* -u : Le nom d'utilisateur de connexion

{% hint style="info" %}
Dans le docker-compose ci-dessus, nous avons précisé un service qui s'appelle **`mon_sgbdr`**.

Docker est suffisamment intelligent d'avoir pu créer, dans son DNS local, un hôte virtuel de ce nom, avec le port correspondant.

Ensuite, la partie **`networks`** a configuré un réseau qui s'appelle **`sgbdr-network`**, auquel notre DevContainer pour nos supports appartient aussi (regardez le `.devcontainer/docker-compose.yml`).

Tout cela faite une sorte qu'on puisse demander une connexion à partir d'un Container (VSCode/Supports SGBDR) vers un autre Container (celui de MariaDB), rien qu'en précisant le ***nom du service*** en tant que ***nom d'hôte*** !
{% endhint %}

Essayez une instruction sql : `show databases`

![](https://2009031458-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRDoAPzYMcmOsCu8dxxWU%2Fuploads%2Fv29WfqIZe6edlNG0mVoA%2Fimage.png?alt=media\&token=16e33c09-c978-4a25-ab4b-84b48358fca8)

## Client App UI

Si vous préférez utiliser une interface visuelle, il en existe pour toutes les plateformes :

#### Sequel Pro (Mac OS) : <https://www.sequelpro.com>

Client simple et efficace pour les connexions SQL.

<figure><img src="https://2009031458-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRDoAPzYMcmOsCu8dxxWU%2Fuploads%2FpVpXskuAma7MuWaSUqiu%2Fimage.png?alt=media&amp;token=e5d86137-3c6b-4f4e-b422-541b06ec8666" alt=""><figcaption></figcaption></figure>

#### MySQL WorkBench (Windows et MacOS) : <https://www.mysql.com/products/workbench/>

Client visuel qui fonctionne sur Windows et Mac. Attention, ce logiciel va se plaindre comme quoi vous ne vous connectez pas à MySQL (puisqu'on utilise MariaDB). Vous pouvez ignorer le message.

Parfois, il y aura des petites choses pas compatibles, mais toutes les commandes SQL émis dans ce cours peuvent être effectuées via WorkBench.

<figure><img src="https://2009031458-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRDoAPzYMcmOsCu8dxxWU%2Fuploads%2FrAkkdqwRrJvLD61tVvza%2Fimage.png?alt=media&amp;token=ef9d1bbb-72fb-49b6-af45-cdf26c3c74f0" alt=""><figcaption></figcaption></figure>

Attention, WorkBench exige par défaut une connexion sécurisée. Or, actuellement notre Container MariaDB n'est pas sécurisé avec SSL ou autre. Donc, il faut signaler à WorkBench de désactiver la sécurité, dans l'onglet "Advanced" :

<figure><img src="https://2009031458-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRDoAPzYMcmOsCu8dxxWU%2Fuploads%2FdkODK7uteA57grKaKU1X%2Fimage.png?alt=media&amp;token=78692c8c-7c63-441e-aad3-f92c15316428" alt=""><figcaption><p>Ajoutez "useSSL=0" aux options pour désactiver SSL sur la connexion locale.</p></figcaption></figure>

## Web App: phpMyAdmin

Vous connaissez sûrement déjà l'interface **phpMyAdmin** pour la gestion de vos SGBDR.

Pourquoi pas ajouter un deuxième service à votre docker-compose.yml ?

L'image docker existe déjà : <https://hub.docker.com/_/phpmyadmin>

:rocket: Je vous laisse cette configuration comme exercice !
