Tải bản đầy đủ (.pdf) (5 trang)

Pratique de MySQL et PHP- P96 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (154.22 KB, 5 trang )

A.3 Fichiers de configuration 453
/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.cnf est 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
454 Annexe A. Installation Apache/PHP/MySQL
d’un paramétrage :
[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql
set-variable = key_buffer=64M
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.log et 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. Copiez
my-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]
user = root
password = mdproot
A.4 Sauvegardes 455
Dans la section [mysql], définissez la base par défaut :
[mysql]
database = 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,sansleWHERE
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écute DELETE FROM table, sans clause WHERE,ilne
se donne même pas la peine de parcourir les lignes de la table : le fichier est détruit et recréé.
D’où le message

Query OK, 0 rows affected, bien que toutes les lignes a ient effectivement
disparu.
456 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 fichier
filmSQL.sv contient 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
A.5 phpMyAdmin 457
pour 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 fichier table.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
fichier
SvFilms :
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.Lapremièrechoseà
faire est d’affecter l’URL de phpMyAdmin àl’élémentPmaAbsoluteUri du tableau
$cfg. Par exemple :
$cfg[’PmaAbsoluteUri’] = ’http://localhost/phpMyAdmin/’;

×