DATADIR/my.cnf Quand il y a plusieurs serveurs, ce fichier, placé dans le répertoire racine des bases d’un serveur, permet d’indiquer les options pour ce serveur en particulier.. A.3.4 C
Trang 1/etc/my.cnf Ce fichier donne les options globales pour tous les serveurs MySQL
tournant sur la machine On peut y indiquer des choix sur la taille des buffers utilisés, ou le paramétrage par défaut de tel ou tel client MySQL, mais surtout pas des mots de passe ! Ce fichier est accessible en lecture par tous les clients MySQL
DATADIR/my.cnf Quand il y a plusieurs serveurs, ce fichier, placé dans le répertoire racine des bases d’un serveur, permet d’indiquer les options pour ce serveur en particulier
.my.cnf Placé dans le répertoire $HOME d’un utilisateur, ce fichier donne les options et préférences de cet utilisateur On peut y placer le compte de connexion à MySQL (login et mot de passe) en s’assurant que ce fichier n’est lisible que par l’utilisateur
Sous Windows, le fichier de configuration doit être placé dans C: \
Malheureuse-ment tout utilisateur ayant un compte sur la machine pourra lire son contenu Évitez donc d’y placer des mots de passe
A.3.3 Configuration du serveur
Le fichier/etc/my.cnfest particulièrement utile pour paramétrer le serveur Entre autres options importantes, on peut :
1 choisir la langue pour les messages d’erreur ;
2 choisir la taille de la mémoire centrale allouée au serveur ;
3 fixer l’une des très nombreuses options de lancement du serveur mysqld.
La commande suivante donne toutes les options possibles,
mysqld help
Voici un extrait de l’affichage obtenu avec cette commande
-b, basedir=path Path to installation directory All paths are
usually resolved relative to this -h, datadir=path Path to the database root
-L, language= Client error messages in given language May be
given as a full path -l, log[=file] Log connections and queries to file
log-update[=file] Log updates to file.# where # is a unique number
if not given.
pid-file=path Pid file used by safe_mysqld
-P, port= Port number to use for connection
-O, set-variable var=option
Give a variable an value help lists variables socket= Socket file to use for connection
-u, user=user_name Run mysqld daemon as user
La version longue des paramètres ci-dessus peut être utilisée dans le fichier
/etc/my.cnf, à l’intérieur de la section commançant par mysqld Voici l’exemple
Trang 2454 Annexe A Installation Apache/PHP/MySQL
d’un paramétrage :
[mysqld]
language = french
log
log-update
On a indiqué, entre autres :
1 que les messages doivent être en français (option language) ;
2 que toutes les connexions et requêtes à MySQL sont conservées dans un
fichier log (dont le nom est, par défaut, mysqld.loget l’emplacement le répertoire racine des bases de données) ;
3 que toutes les mises à jour sont également conservées dans un fichier de log ;
4 que la mémoire cache pour les index est de 64 mégaoctets.
A.3.4 Configuration d’un compte administrateur
Voici comment configurer un compte administrateur qui veut se connecter, avec tout
client de MySQL, à la base mysql sous le compte root Prenons comme exemple le client mysql : voici un extrait des paramètres obtenus par mysql -help.
-D, database= Database to use
-e, execute= Execute command and quit.
-f, force Continue even if we get an sql error.
-H, html Produce HTML output
-O, set-variable var=option
Give a variable an value help lists variables -p, password= Password to use when connecting to server
If password is not given it’s asked from the tty -u, user=# User for login if not current user
-E, vertical Print the output of a query (rows) vertically Dans un environnement Unix, voici comment indiquer avec un fichier de confi-guration, que l’utilisateur mysql est l’administrateur de la base de données On indique que son compte de connexion à MySQL est root, on donne le mot de passe (mettez le vôtre !), et la base par défaut, mysql
1 Copiezmy-example.cnf dans le répertoire $HOME de mysql, et renommez-le en
.my.cnf
2 Éditez .my.cnf Le fichier contient plusieurs sections dédiées respectivement aux paramètres du serveur, du client, etc Dans la section commençant par [client], ajoutez deux lignes comme indiqué ci-dessous :
[client]
Trang 3Dans la section [mysql], définissez la base par défaut :
[mysql]
3 Il ne reste plus qu’à protéger ce fichier des regards indiscrets
% chmod go-rwx my.cnf
Une fois ce fichier créé, la commande mysql, exécutée sous le compte UNIX
mysql, vous connecte directement à la base mysql sans avoir à entrer le compte
utilisateur, le mot de passe, et sans avoir à utiliser la commande USE mysql Le principe est généralisable à tous les utilisateurs, en leur permettant une connexion automatique à leur base de référence Vous pouvez par exemple indiquer des options
de connexion pour le compte utilisateur d’Apache
Le compte et le mot de passe sont valables pour tous les programmes clients de MySQL, ce qui permet, sous le compte mysql, d’arrêter le serveur sans saisir de mot
de passe avec la commande
% mysqladmin shutdown
A.4 SAUVEGARDES
Il existe de nombreuses manières de perdre des données Bien entendu, on pense toujours à un incident matériel comme la panne d’un disque, mais le problème vient beaucoup plus fréquemment d’une erreur humaine Par exemple il est très facile d’introduire un point-virgule mal placé dans une requête, avec un résultat qui peut être désastreux :
% mysql
mysql> DELETE FROM Artiste; WHERE id = 67;
Query OK, 0 rows affected (0.02 sec)
ERROR 1064: You have an error in your SQL syntax
near ’WHERE id = 0’ at line 1 mysql> select * from Artiste;
Empty set (0.00 sec)
On a donc bel et bien exécuté la requête DELETE FROM Artiste, sans le WHERE
qui est placé après le point-virgule « ; » Résultat : tout est détruit dans Artiste,
sans possibilité de récupération autre qu’une sauvegarde (sauf si on utilise l’option transactionnelle de MySQL, InnoDB, non décrite ici)
REMARQUE –Quand MySQL exécuteDELETE FROM table, sans clauseWHERE, il ne
se donne même pas la peine de parcourir les lignes de la table : le fichier est détruit et recréé D’ó le messageQuery OK, 0 rows affected, bien que toutes les lignes aient effectivement disparu.
Trang 4456 Annexe A Installation Apache/PHP/MySQL
Les sauvegardes peuvent se faire se manière traditionnelle, en créant une archive
zip ou tar (n’oubliez pas d’arrêter le serveur mysqld auparavant) contenant les fichiers
de la base L’inconvénient est qu’il n’est pas facile d’en extraire, si besoin est, une partie seulement des tables ou des lignes
L’utilitaire phpMyAdmin propose une fonction d’exportation de base de données simple à utiliser, et comprenant toutes les options nécessaires MySQL seul fournit
deux solutions complémentaires, un utilitaire, mysqldump, et la création de fichiers log qui enregistrent au fur et à mesure les modifications sur la base L’utilitaire mysqldump
produit un fichier contenant les ordres SQL de création des tables et/ou des lignes dont la sauvegarde a été demandée La syntaxe générale est :
% mysqldump [options ] base [tables]
Pour sauvegarder la base FilmSQL dans un fichier filmSQL.sv, la commande est donc :
% mysqldump -u root -p FilmSQL > filmSQL.sv
Bien entendu on peut se connecter sous n’importe quel nom d’utilisateur ayant au
moins un droit select sur la base Comme tous les utilitaires de MySQL, mysqldump
utilise les informations de connexion du fichier de configuration si elles existent Pour sauvegarder une ou plusieurs tables, on donne leur nom Par exemple on
peut demander une sauvegarde de la table Film.
% mysqldump -u root -p FilmSQL Film > filmSQL.sv
Le fichierfilmSQL.svcontient alors à la fois les commandes de création de la table
et les commandes d’insertion des lignes
#
# Table structure for table ’Film’
#
CREATE TABLE Film (
titre varchar(50) DEFAULT ’’ NOT NULL,
annee int DEFAULT ’0’ NOT NULL,
id_realisateur int,
genre varchar(20),
PRIMARY KEY (titre)
#
# Dumping data for table ’Film’
#
INSERT INTO Film VALUES (’Impitoyable’,1992,20,’Western’);
INSERT INTO Film VALUES (’Van Gogh’,1990,29,’Drame’);
INSERT INTO Film VALUES (’Kagemusha’,1980,68,’Drame’);
INSERT INTO Film VALUES (’Les pleins pouvoirs’,1997,20,’Policier’);
Un des grands avantages de cette méthode est que l’on peut utiliser le fichier comme un script SQL, soit pour recréer une base ou une table dans MySQL, soit
Trang 5pour transférer une base vers un autre système relationnel Comme le fichier est au format texte, on peut également facilement en extraire des parties pour récupérer partiellement des données ou des tables
Les principales options de mysqldump sont données dans la table 1.1 Comme pour
tous les autres utilitaires, on obtient la liste des options disponibles en lançant :
% mysqldump -help
Tableau 1.1 — Options de mysqldump.
Option Description
-t Sauvegarde des lignes, mais pas des commandes de création de table.
-T r´ epertoire Écrit dans r´ epertoire deux fichiers pour chaque table Le fichier
table.sql contient la commande de création, et le fichiertable.txt
les lignes.
-c Produit des ordres INSERT complets, avec la liste des attributs.
-l Verrouille les tables avant la sauvegarde pour éviter des mises à jour
simulta-nées.
-u, -p, -h Les options habituelles pour, respectivement, l’utilisateur, le mot de passe et le
nom de l’hôte de mysqld.
Les options par défaut peuvent changer avec les versions de MySQL À titre
d’illustration, voici la commande utilisée pour sauvegarder la base Films dans un
fichierSvFilms:
mysqldump -u adminFilms -pmdpAdmin -t Films Artiste Internaute\
Film Notation Role SequenceArtiste \ skip-opt -c skip-lock-tables \ default-character-set=latin1 > SvFilms
Le fichier obtenu est compatible avec PostgreSQL et SQLite L’utilitaire propose des exports aux formats acceptés par d’autres SGBD, dont ORACLE
A.5 phpMyAdmin
Il existe de nombreux outils qui facilitent (au moins pour une prise de contact) la maintenance d’une installation MySQL Le plus populaire est phpMyAdmin, une interface d’administration écrite en PHP
phpMyAdmin est une très bonne illustration de l’utilisation de PHP en associa-tion avec MySQL, et peut s’utiliser aussi bien sous Linux que sous Windows Il se pré-sente sous la forme d’un ensemble de fichiers PHP Le fichier Documentation.html propose une documentation assez brève
phpMyAdmin est configurable avec le fichier config.inc.php La première chose à
faire est d’affecter l’URL de phpMyAdmin à l’élément PmaAbsoluteUri du tableau
$cfg Par exemple :
$cfg[’PmaAbsoluteUri’] = ’http://localhost/phpMyAdmin/’;