Accueil > Le développement > La formation > Les Outils Numériques > Les lignes de commande sous macOS > Les lignes de commande - Leçon 6 - En savoir plus sur MySQL

Les lignes de commande - Leçon 6 - En savoir plus sur MySQL

dimanche 8 octobre 2023, par synper

Nous allons apprendre à mieux utiliser le serveur de base de données. Nous allons utiliser deux méthodes. La première sera d’utiliser la base de données au travers de Phpmyadmin. La seconde sera d’utiliser directement le serveur de base de données en ligne de commande.

Pour notre univers de travail nous aurons besoin de lancer le serveur Apache, qui lancera lui-même le php, de lancer le serveur MySQL.

Si vous utiliser le serveur Apache natif, il faut lancer le serveur Web Http :
sudo apachectl start
Mais aussi le serveur de bases de donnée
mysql.server start

Si vous utiliser un autre serveur Apache installé avec Homebrew, vérifier les services actifs :
brew services list et si besoin, lancez le serveur Apache
brew services start httpd

1. PhpmyAdmin : des scripts PHP pour gérer les bases de données

1.1 installer le logiciel

PhpmyAdmin est une interface qui vous permettrait totalement de vous passer de faire des lignes de commande.
Phpmyadmin peut être installé avec Brew par cette simple ligne de commande :
brew install phpmyadmin
Si vous ne savez plus si vous l’avez installé, demander tous simplement à Homebrew de vous le dire par la commande :
brew info phpmyadmin

1.1 Faire reconnaitre le répertoire de phpmyadmin par le serveur web http Apache

Après l’installation, il est nécessaire de préciser dans la configuration du serveur web http les informations nécessaires à l’utilisation du répertoire où il est placé. Cette information doit être donnée dans le fichier de configuration.

Le fichier de configuration du serveur natif s’édite ainsi :
sudo vim /etc/apache2/httpd.conf
Le fichier de configuration du service supplémentaire installé avec Homebrew s’édite ainsi :
vim /opt/homebrew/etc/httpd/httpd.conf

Rechercher la boucle où il est vérifié que le module d’alias est activé (<IfModule alias_module>) et ajouter les instructions suivantes :

Alias /phpmyadmin /opt/homebrew/share/phpmyadmin
<Directory /opt/homebrew/share/phpmyadmin/>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride All
     DirectoryIndex index.html index.php
     <IfModule mod_authz_core.c>
     Require all granted
     </IfModule>
     <IfModule !mod_authz_core.c>
     Order allow,deny
     Allow from all
     </IfModule>
</Directory> 

Relancer le serveur don nous avons changer la configuration.
Pour relancer le serveur natif :
sudo apachectl -k restart
Connectez vous :
http://localhost/phpmyadmin/

Pour relancer le serveur installé avec Homebrew :
brew services restart httpd
Connectez vous :
http://localhost:8080/phpmyadmin/

En correspondance avec votre précédente installation, entrez l’identifiant et le mot de passe, éventuellement root, root.

Vous observerez deux messages d’erreur :

Avertissement Le fichier de configuration a besoin d’une clé valide pour le chiffrement des cookies. Une clé temporaire a été générée automatiquement pour vous. Veuillez vous référer à la documentation.
Avertissement $cfg[’TempDir’] (/opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/tmp/) n’est pas accessible. phpMyAdmin est incapable de mettre en cache les modèles et de ce fait sera lent.

1.2 Donner les droits nécessaire au répertoire tmp

La commande
cd /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/tmp/
nous permet de constater qu’effectivement le répertoire tmp n’existe pas et que l’avertissement fait est justifié.

Nous nous plaçons dans le répertoire parent :
cd /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/
Et nous créons le répertoire manquant :
mkdir tmp
Nous lui donnons les droits nécessaires à l’écriture des fichiers temporaires
chmod 777 tmp

1.3 Créer une clé valide pour le chiffrement des cookies

Phpmyadmin demande un clé de 32 bites pour sécuriser ses cookies. Pour le plaisir de la pédagogie de ce cours, nous allons générer la clé avec les instructions php ci dessous :

$bytes = random_bytes(16);
var_dump(bin2hex($bytes));

Nous saisissons ces instructions dans notre fichier en l’éditant avec la commande :
sudo vim ~/Sites/index.php

Après avoir exécuté le script php et obtenu la clé, nous la saisissons dans le fichier de configuration de phpmyadmin en l’éditant avec la commande :
vim /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/config.inc.php
Il s’agit de compléter la ligne suivante avec la clé :
$cfg['blowfish_secret'] = '1c0771fe3eb01f01c82d5ca43c3dca15';
ou 1c0771fe3eb01f01c82d5ca43c3dca15 est votre clé 32 bites.

2. Gérer le Serveur MySQL en ligne de commande

La limitation de Phpmyadmin est le PHP par lequel on passe pour s’adresser à la base de données. Les import volumineux peuvent être problématique, par exemple, a cause des délais de réponse et les abandons auxquels s’attend le PHP. Savoir faire un import directement en ligne de commande est donc important !

Pour connaitre l’installation faite et la version utilisée de Mysql, entrer la ligne de commande :
brew info mysql

2.1 Accéder à la console mysql

Saisissez la commande suivante, qui indique que vous voulez avoir accès à la console mysql en étant identifié comme l’utilisateur root.
mysql -u root -p
La console vous demandera de confirmer le mot de passe (laissé en local à root).

Pour connaitre les bases de données existantes, vous pouvez entrer la commande suivante :
SHOW DATABASES;

Vous pouvez sélectionner une base de donnée avec la ligne de commande
USE spip
spip étant l’exemple d’une nom de base de données.

Vous pouvez voir les tables de cette base de données avec l’instruction suivante :
SHOW TABLES;

Vous pouvez avoir la description d’une table, ici spip_zones, par la ligne de commande suivante :
DESCRIBE spip_zones;

Les valeurs d’une tables peuvent être affichées par l’instruction :
SELECT * FROM spip_zones;

Vous pouvez avoir une ligne unique (id_zone = 1) de la table et afficher toute ses valeurs (*) par l’instruction ci-après :
SELECT * FROM spip_zones WHERE id_zone = 1;

2.2 paramétrer le serveur de base de données pour qu’il accepte les datetimes en 0000-00-00 00:00:00

Avec MySQL 8, vous pouvez enregistrer des dates avec la valeur zéro sauf si vous êtes en mode NO_ZERO_DATE. Or ce mode est parmi les modes par défaut.

Il faudra éditer le fichier de configuration du serveur de base de données :
vim /opt/homebrew/etc/my.cnf
Il faut ajouter une ligne précisant les modes :
sql_mode = "STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
Puis il faut relancer le service pour que cette nouvelle configuration soit prise en compte :
brew services restart mysql

2.2 importer une base de données