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
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