AnnexeA
Installation Apache/PHP/MySQL
Sommaire
Nous de´crivonsdans cette annexel’installation et la configuration d’un environnementcomplet MySQL/PHP/Apache sous Linux ou sous Windows. En ge´neral,´ une installation se reposant au maximum sur les options par de´faut ne pose aucun proble`me particulier. Cela etant´ il suffit de peu de choses pour que des proble`mes surgissent. Afin de vous aider a` surmonter ces obstacles eventuels,´ nous donnons une explication assez de´taillee´ du pourquoi et du comment de chaque commande.
La premie`re chose a` faire est de te´lecharger´ les logiciels. Tout est gratuit! Voici les sites de re´ference´ pour trouver la dernie`re version.
– Pour MySQL, c’est . – Pour PHP, c’est .
– Pour Apache, c’est .
– Si vous souhaitez phpMyAdmin, c’est .
Pour Linux, les logiciels s’obtiennent soit sous la forme de packages RPM contenant tous les programmes compile´s, soit sous la forme d’un fichier archive tar compresse´, en ge´neral´ avec gunzip, contenant le code source qu’il faut alors compiler. La version Windows est fournie sous forme d’une archive .zip contenant les programmes exe´cutables.
Cette installation suppose une maˆ?trise minimale des commandes UNIX, la compre´hension des principes de base d’une installation logicielle (compilation, fichiers makefile, fichiers sources et fichiers binaires, etc), et la possibilite´ de travailler sous le compte root.
Cette me´thode permet une installation tre`s simple d’une version pre´-compilee´ d’un logiciel. Il suffit de re´cuperer´ un fichier correspondant au processeur de votre machine, comme par exemple part MySQL- pour un processeur Intel. On installe ensuite avec la commande Unix rpm -i .
Cette me´thode est un peu plus compliqueé, mais elle permet en contrepartie d’avoir un controˆle total sur les parame`tres de l’installation. La premie`re chose a` faire est de de´compresser chaque fichier, et d’en extraire les sources dans un re´pertoire de votre machine. Nous allons effectuer des choix standard pour tout ce qui concerne les emplacements des logiciels, mais vous etesˆ libres d’agir comme bon vous semble si vous vous sentez suffisamment compe´tent. Les sources seront installeés dans /usr/local/src. Voici comment cela se passe par exemple pour MySQL.
1. Si le re´pertoire /usr/local/src n’existe pas, creéz-le:
% cd /usr/local
% mkdir /usr/local/src
2. Copiez le fichier mysql- dans /usr/local/src. NB: version indique ici le nume´ro de la version que vous avez te´lechargeé.´ On suppose dans ce qui suit qu’il s’agit de la 3.23.9.
% cp /usr/local/src
3. Allez dans /usr/local/src et de´compressez le fichier avec gunzip (extension .gz) ou uncompress (extensions .Z).
% gunzip
On obtient le fichier de´compresse´ .
4. Il reste a` extraire tous les fichiers de l’archive .tar avec:
% tar xvf
Cette extraction creé un re´pertoire mysql-3.23.9 dans /usr/local/src et y place tous les fichiers.
Faire de meˆme avec les archives Apache et PHP. Dans ce qui suit on suppose que les versions de ces logiciels sont respectivement apache 1.3.4 et php-4.0.
Eventuellement,´ il faut re´cuperer´ aussi le compilateur GNU C++ si vous ne l’avez pas. On peut le trouver par exemple a` ou sur un site miroir GNU. Vous avez besoin de la version 2.8.1 (au moins) pour pouvoir compiler MySQL. Voici les commandes permettant d’installer le compilateur:
1. Re´cuperez´ par le fichier (ou version supe´rieure) et placez le dans /usr/local/src.
2. De´compressez l’archive, et extrayez son contenu:
% gunzip
% tar xvf
Ce qui creé un nouveau re´pertoire gcc-2.8.1 dans /usr/local/src.
3. Placez vous dans ce re´pertoire avec la commande
% cd gcc-8.2.1
4. Entrez successivement les commandes suivantes:
% ./configure
% make
% make install
C’est tout! Par de´faut, l’installation se fait dans /usr/local/bin. Il faut donc mettre ce re´pertoire au de´but de la variable PATH, avec une commande qui de´pend du shell employe´, ici pour les shell de type Bourne comme bash:
% export PATH=/usr/local/bin:$PATH
Vous pouvezve´rifier alors que tout s’est bien passe´ avec la commande gcc -v qui devrait vous afficher gcc version 2.8.1 (ou version supe´rieure). Vous etesˆ maintenant preˆts a` installer successivement MySQL, puis le couple PHP/Apache. Globalement ces installations suivent toujours le processus de´crit ci-dessus pour gcc, qui se re´sume aux trois commandes configure, make et make install.
1. configure analyse votre environnement Linux et ve´rifie que tous les ele´ments´ ne´cessaires (compilateur, librairies) sont disponibles. configure produit egalement´ un fichier makefile qui contient toutes les commandes de compilation et d’e´dition de liens.
2. make exe´cute le makefile produit durant l’e´tape pre´cedente.´ Il s’agit souvent de la partie la plus longue puisque tous les fichiers sources doivent etreˆ compile´s. A` la fin de cette etape´ tous les programmes exe´cutables ont ete´´ creés.´
3. La commande make install comple`tel’installation en transfe´rant dans un re´pertoire inde´pendant tous les exe´cutables, librairies, et fichiers de scripts. Tout utilisateur souhaitant utiliser le logiciel devra avoir acce`s a` ce re´pertoire.
Et en cas de proble`me? La` il faut faire preuve d’esprit d’initiative. Vous pouvez en ge´neral´ recommencer le processus d’installation en tapant make clean qui de´truit tous les fichiers re´sultant d’une compilation. Souvent les proble`mes sont de´tectes´ par configure dont un des roˆles est justement de s’assurer que l’environnement est suffisant pour que tout se passe bien par la suite. Il se peut que vous ayez a` re´cuperer´ des logiciels comple´mentaires, comme par exemple flex, un analyseur lexical utilise´ par PHP. En principe ces logiciels se trouvent facilement sur le Web, et s’installent selon les etapes´ standard illustreés ci-dessus avec gcc.
Remarque: Si vous rencontrez des difficulte´s lors de l’installation d’un logiciel, une explication possible est que la proce´dure que nous de´crivons a evolue´,´ ou que votre version particulie`re de Linux (nous utilisons une Suse 7) se comporte diffe´remment. On trouve partout sur le Web, en utilisant un moteur de recherche, des notices d’installation a` jour: cherchez celle qui correspond a` votre configuration et suivez ses instructions.
Il faut re´cuperer´ d’une part MySQL-, pour le serveur, VERSION etant´ bien entendu la dernie`re version stable de MySQL au moment de l’installation, et d’autre part MySQL-client pour les utilitaires.
La commande suivante affiche le contenu d’un package:
% rpm -qpl MySQL-VERSION
Pour effectuer l’installation, il suffit d’entrer la commande suivante:
% rpm -i MySQL-VERSION MySQL-client-VERSION
Le re´pertoire des bases de donneés est alors /var/lib/mysql. Vous pouvez passer ensuite a` la partie Initialisation .
Le re´pertoire standard pour les exe´cutables est /usr/local/mysql. Pour la configuration on se place dans mysql-3.23.9 et on proce`de comme suit:
% ./configure --prefix=/usr/local/mysql
Cette commande analyse l’environnement et creé un fichier makefile. L’option --prefix indique le re´pertoire final d’installation. Il existe beaucoup d’autres options qui permettent, par exemple, d’indiquer un emplacement spe´cifique pour les fichiers des bases de donneés.
On exe´cute ensuite:
% make
et les instructions du makefile vont etreˆ utiliseés pour compiler tout les fichiers sources. On est toujours dans mysql-3.23.9: il reste a` installer tout ce qui est ne´cessaire a` l’exe´cution dans /usr/local/mysql avec la commande
% make install
MySQL est preˆt! Tous les exe´cutables, ainsi que des fichiers utilitaires, sont dans /usr/local/mysql/bin. Il faut donc placer ce re´pertoire dans la variable PATH de tout utilisateur souhaitant acce´der a` ces programmes. Cela donne, sous le cshell:
% setenv PATH /usr/local/mysql/bin:$PATH
Ou encore, sous le kshell ou bash (le plus courant sous Linux):
% export PATH=/usr/local/mysql/bin:$PATH
Ces commandes devraient etreˆ placeés dans le fichier shell qui est exe´cute´ automatiquement quand un utilisateur se connecte a` Unix. Selon le cas ce fichier peut etreˆ .profile, .bashrc, .login, etc.
1. Cre´ation d’un re´pertoire contenant les bases de donneés, et d’une premie`re base, mysql, pour le dictionnaire des utilisateurs.
2. Lancement et arreˆt du de´mon mysqld a` chaque arreˆt/demarrage´ du syste`me Linux.
Il est fortement conseille´ de ne pas utiliser le compte root pour ge´rer les fichiers de bases de donneés. Le fait, notamment, d’exe´cuter le serveur mysqld sous root signifie que ce serveur aurait tous les droits sur les ressources de la machine, ce qui est peu prudent. La premie`re chose a` faire est donc de creér un compte mysql (ou autre), rattache´ a` un groupe particulier, et ayant des droits limite´s. Essentiellement, cet utilisateur doit pouvoir lire et ecrire´ dans le re´pertoire contenant les bases de donneés.
Dans ce qui suit, nous supposons que le re´pertoire racine de toutes les bases est /usr/local/mysql/var, ce qui est le choix de la configuration par de´faut (vous pouvez changer cette option au moment du configure). Ce re´pertoire doit appartenir a` l’utilisateur mysql. Proce´dez de la manie`re suivante:
1. Sous root, de´clarez le compte mysql proprie´taire des droits sur /usr/local/mysql, et ses sousre´pertoires.
% cd /usr/local
% chown -R mysql mysql
2. Connectez-vous sous le compte Unix mysql.
3. Creéz la base initiale avec les commandes suivantes.
% cd /usr/local/src/mysql-3.23.9/scripts
% ./mysqlinstalldb
Vous devriez, dans /usr/local/mysql/var,avoir deux re´pertoires nomme´srespectivementmysql et test. Le re´pertoire mysql contient les fichiers de la base mysql (de´sole,´ beaucoup de choses s’appellent mysql!), de´crivant les utilisateurs et les droits d’acce`s. La commande ls -l *.frm devrait afficher quelque chose comme:
-rw-rw---- | 1 mysql | ||||||||||||||||||||||||||||||||||||||||||||||||||
-rw-rw---- | 1 mysql | ||||||||||||||||||||||||||||||||||||||||||||||||||
-rw-rw---- | 1 mysql | ||||||||||||||||||||||||||||||||||||||||||||||||||
-rw-rw---- | 1 mysql | ||||||||||||||||||||||||||||||||||||||||||||||||||
-rw-rw---- | 1 mysql | ||||||||||||||||||||||||||||||||||||||||||||||||||
-rw-rw---- | 1 mysql % ./safemysqld& Si tout va bien, le message Starting mysqld daemon with databases from /usr/local/mysql/var devrait s’afficher. Le serveur est lance´, et vous pouvez acce´der a` la base avec un des programmes clients qui se trouvent dans mysql/bin. La commande mysqlshow devrait par exemple, a` ce stade, afficher le re´sultat suivant: +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ Vous pouvez egalement´ utiliser mysqladmin avec ses tre`s nombreuses options. Par exemple la commande % mysqladmin ping devrait re´pondre mysqld is alive. Pour arreˆter manuellement le serveur, on utilise egalement´ mysqladmin: % mysqladmin -u root shutdown Lancement et arretˆ automatiques du serveurLe serveur devrait etreˆ lance´ et stoppe´ automatiquement avec le syste`me. Nous donnons ci-dessous une manie`re classique de proce´der, a` adapter a` chaque cas. Le fichier mysql.server, dans le re´pertoire support-files, fournit un script preˆt a` l’emploi pour lancer/stopper le serveur de MySQL. Ce script accepte les parame`tres start ou stop. Il suffit en principe de le placer dans un des re´pertoires d’initialisation du syste`me. 1. Connectez-vous sous le compte Unix root 2. Copiez mysql.server dans /etc/rc.d % cd /usr/local/src/mysql-3.23.9/support-files % cp mysql.server /etc/rc.d % cd /etc/rc.d % chmod u+x mysql.server 3. Editez´ le fichier mysql.server et remplacez la ligne mysqldaemonuser=root par mysqldaemonuser=mysql. 4. Indiquez au syste`me que le script doit etreˆ exe´cute´ au niveau 3 du lancement de Linux. % cd rc3.d % ln -s ../mysql.server K99mysql % ln -s ../mysql.server S99mysql Le serveur de MySQL sera lance´ et stoppe´ automatiquement avec Linux. Le processus ci-dessus de´pend fortement de votre configuration. Consultez votre documentation ou votre administrateur syste`me si besoin est. Le principe est le meˆme que pre´cedemment,´ a` ceci pre`s qu’il faut indiquer a` PHP que, d’une part, les fonctions d’acce`s a` MySQL doivent etreˆ inte´grees´ dans la librairie, et d’autre part que le module PHP doit etreˆ ajoute´ a` Apache. Pour des raisons obscures, Apache doit etreˆ configure´une premie`re fois. Creéz un re´pertoire /usr/local/apache , puis exe´cutez les commandes suivantes: % cd /usr/local/src/apache1.3.4 % ./configure Maintenant on peut installer PHP. Voici les commandes, semblables a` celles de´ja` vues pour MySQL. % cd /usr/local/src/php-4.0 % ./configure --with-mysql --with-apache=../apache1.3.4 % make % make install L’option --with-mysql,sans indiquer de valeur, marche si on a bien installe´ MySQL dans /usr/local parce que ce re´pertoire fait partie des choix par de´faut que la configuration de PHP connaˆ?t.De`s que l’on fait des choix d’installation qui s’e´cartent du standard, les parame`tres a` spe´cifier sont beaucoup plus nombreux et les risques de proble`mes plus grands. En principe les commandes ci-dessus fonctionnent sans proble`me. Dans le cas contraire, ou si vous n’eˆtes pas tout a` fait suˆr de votre environnement, cela vaut la peine de lire le fichier INSTALL qui se trouve dans le re´pertoire php-4.0. Le fichierDernie`re chose a` faire pour installer PHP: copier le fichier dans /usr/local/lib. Ce fichier est fourni dans php-4.0. Il contient toutes les options d’exe´cution de PHP. On peut spe´cifier des choses aussi diverses que les balises prises en compte, la pre´cision des calculs, les fichiers qui doivent etreˆ inclus automatiquement, des restrictions de se´curite,´ etc. La table A.1 donne les principales options. 1. trackvars devrait etreˆ a` On pour permettre la re´cuperationde´ variables dans les tableaux HTTPVARS. 2. magicquotegpc peut valoir off ou on. La valeur on est recommandeé: elle permet de pre´fixer automatiquement par ’\’ tous les caracte`res saisis dans les formulaires ou provenant de cookies qui risqueraient de poser proble`me avec MySQL. Par exemple la simple quote (’) est transformeé en (\’). 3. magicquotesruntime devrait valoir Off. Ainsi les donneés provenant de MySQL ne seront pas modifieés, meˆme si elles contiennent des (’). Ce comportement est celui qui pose le moins de proble`mespuisqu’il evite´ d’avoir a` utiliser syste´matiquement les fonctions addSlashes et stripSlashes. Pour un site en exloitation, il est recommande´ d’activer l’option safemode, et de restreindre le plus possible des fichiers auxquels un script PHP peut acce´der. Il ne reste plus qu’a` installer Apache, en pre´cisant bien que le module PHP4 doit etreˆ active´. Voici les commandes. % cd /usr/local/apache_1.3.4 % ./configure --prefix=/usr/local/apache \
TAB. A.1 – Options de configuration du fichier --activate-module=src/modules/php4/libphp4.a % make % make install On aboutit a` une installation dans /usr/local/apache.Elle contient, dans le sous-re´pertoire bin, le serveur httpd, ainsi que des fichiers de configuration qu’il faut le´gerement` modifier. – Editez´ le fichier . – Modifiez la ligne qui contient DirectoryIndex comme suit DirectoryIndex Par de´faut, Apache chargera un fichier s’il le trouve. – Indiquez les extensions qui correspondent aux fichiers PHP. Les lignes existent de´ja` en commentaires dans : il faut retirer le # pour que Apache reconnaisse les extensions des fichiers qui doivent etreˆ traite´s par le moteur PHP. AddType application/x-httpd-php .php % cd /usr/local/apache % ./bin/apachectl start httpd est lance´ et se met en ecoute´ sur le port 80 (a` moins que vous n’ayez change´ la valeur de Port dans ). Pour lancer et stopper Apache avec Linux, proce´dez comme indique´ pour le serveur MySQL, en utilisant le script apachectl. Les documents HTML doivent alors etreˆ place´s dans le re´pertoire htdocs, ou dans un sous-re´pertoire de ce dernier. Vous disposez maintenant d’un environnement de travail qui vous permet, par exemple, de re´cuperer´ le code de notre site, de l’installer et de le modifier a` votre guise. Pour aller plus loin et disposer d’un site performant et se´curise,´ il faut impe´rativement soigner la configuration d’Apache. Une solution simple et efficace pour prote´ger l’acce`s de vos fichiers est de creér un compte utilisateur pour Apache, et de le rattacher a` un groupe dont il est le seul membre. Vous pouvez par exemple creér un groupe apachegrp, un utilisateur apache dans ce groupe, et demander a` Apache d’exe´cuter ses processus sous ce compte utilisateur avec les directives User et Group du fichier . Il reste alors a` restreindre les droits d’acce`s aux fichiers constituant un site – notamment ceux qui contiennent des mots de passe – a` cet utilisateur. Placez-vous dans htdocs, et entrez la commande : % chown -R apache . qui permet de rendre le compte apache proprie´taire de tous les fichiers. Puis restreignez les droits d’acce`s avec la commande: % chmod -R og-rwx . Tout ceci n’est qu’une premie`re etape.´ Si vous voulez vraiment maˆ?triser l’administration de votre site, il est impe´ratif de recourir a` des ouvrages spe´cialises.´ Nous vous renvoyons par exemple au livre Webmaster in a nutshell, aux Editions´ O’Reilly. MySQL est fourni pour Windows sous forme d’un fichier archive (.zip) assez volumineux (pre`s de 9 Me´gaoctets). Apre`s re´cuperation´ de ce fichier, vous pouvez le de´compresser avec winzip, ce qui permet d’obtenir un programme d’installation. Lancez ce programme. Une interface graphique classique apparaˆ?t, avec une suite d’e´cran proposant des options d’installation. Le plus simple est d’adopter syste´matiquement les valeurs par de´faut, et notamment d’accepter C:/MySQL comme re´pertoire d’installation. Quand l’installation est termineé, C:/MySQL contient, entre autres, un sous-re´pertoire bin dans lequel on trouve les programmes de MySQL, dont le serveur. La proce´dure de lancement du serveur mysqld varie le´gerement` selon la version de Windows. A.2. INSTALLATIONSOUSWINDOWS Windows NTMySQL peut etreˆ installe´ comme un service de NT. Dans une feneˆtre MS-DOS, placez-vous dans C:/MySQL/bin et entrez la commande: mysqld-nt --install MySQL apparaˆ?t alors dans la liste des services (consultables a` partir du panneau de configuration) et le serveur sera lance´ automatiquement au de´marrage de Windows NT. On peut aussi lancer ou arreˆter manuellement le serveur dans une feneˆtre MS-DOS avec les commandes: net start mysql net stop mysql Si on ne veut pas utiliser MySQL comme un service NT, on peut aussi lancer simplement le serveur avec la commande: mysqld-nt --standalone Pour arreˆter manuellement le serveur dans ce cas on utilise mysqladmin. mysqladmin -u root -p shutdown Autres versions de WindowsPour les autres versions de Windows, il suffit de lancer le serveur mysqld en cliquant sur son icoˆne. Pour l’arreˆter on utilise mysqladmin, dans une feneˆtre MS-DOS. mysqladmin -u root -p shutdown Quelques testsLes versions re´centes de MySQL sont fournies avec un client graphique WinMySQLAdmin qui est tre`s pratique pour administrer le serveur. L’installation avec cet outil est de´crite dans le fichier README du re´pertoire C:/MySQL. Sinon les programmes de MySQL existent dans la version Windows sous forme d’exe´cutables classiques. On peut, comme pour l’installation sous Linux, appeler mysqlshow, mysqladmin ou mysql a` partir d’une feneˆtre MS-DOS pour ve´rifier que l’installation s’est bien passeé et que le serveur est a` l’e´coute. Comme MySQL, Apache est fourni avec un programme d’installation graphique. Les etapes´ sont identiques: 1. on re´cupere` sur un site Apache une archive zip (beaucoup plus petite que MySQL!); 2. en de´compressant l’archive, on obtient un programme d’installation; 3. cliquez sur l’icoˆne du programme d’installation et acceptez les choix par de´faut. Apache est installe´ dans: C:/Program Files/Apache Group/Apache Un sous-menu Apache est egalement´ creé´ dans le menu De´marrer/Programmes de Windows. Il contient des options pour installer Apache en tant que service (Windows NT), lancer ou stopper le serveur (autres Windows). – Windows NTApre`s avoir installe´ Apache comme un service NT graˆceau choix du menu dans De´marrer/Programmes/Apache , on peut lancer ou arreˆter manuellement le serveur par l’interme´diaire de la feneˆtre de controˆle des services dans le panneau de controˆle. Apache est lance´ automatiquement avec Windows NT. – Autres versions de WindowsLe serveur est lance´ et stoppe´ graˆce aux choix du menu Programmes/Apache . En lanc¸ant un navigateur, puis en acce´dant au site http://localhost, on peut tester l’installation du serveur. – Copiez le fichier -dist dans C:/WINDOWS (ou C:/WINNT); renommez-le en . Ce fichier contient les options de PHP : quelques informations comple´mentaires sont donneés dans la section consacreé a` l’installation de PHP sous Linux. – Copiez les librairies et dans C:/WINDOWS/SYSTEM (il se peut que existe de´ja,` auquel cas il est inutile de la remplacer). Sous Windows, Apache exe´cute un script PHP en appelant l’interpre´teur . L’essentiel de l’installation consiste donc a` parame´trer le fichier de configuration Apache pour lui indiquer ou` se trouve ce programme et quels fichiers doivent lui etreˆ transmis. Dans le re´pertoire Apache/conf, editez´ le fichier et proce´dez comme suit: 1. Cherchez la ligne avec ServerAdmin et indiquez votre email. Par exemple: ServerAdmin 2. Cherchez la ligne avec ServerName et indiquez le nom de l’ordinateur (ou localhost). Par exemple: ServerName 3. Cherchez une ligne avec ScriptAlias. Il doit en exister une avec le re´pertoire contenant les programmes CGI. Ajoutez la ligne suivante pour indiquer ou` se trouve l’interpre´teur PHP4. ScriptAlias /php4/ "C:/php4/" Ne pas oublier le dernier ’/’! Bien entendu vous devez indiquer le vrai re´pertoire d’installation de PHP4, si vous avez choisi autre chose que C:/PHP4. 4. Maintenant il faut indiquer a` Apache l’extension des fichiers PHP. Cherchez la section avec le terme AddType et ajoutez: AddType application/x-httpd-php .phtml .php AddType application/x-httpd-php-source .phps Vos fichiers devront avoir une extension .php (vous pouvez donner l’extension .babar si vous voulez, mais vos scripts ne seront pas tre`s portables ). 5. Finalement il faut associer les scripts PHP a` l’interpre´teur, en ajoutant la ligne suivante: Action application/x-httpd-php <?php phpInfo(); ?> Essayez d’acce´der a` l’URL : la page d’accueil de PHP doit s’afficher. Et c’est termine´: L’API MySQL est incluse d’office dans l’interpre´teur PHP, ce qui evite´ toute manipulation supple´mentaire. Les instructions qui suivent permettent de comple´ter l’installation de MySQL. Elles sont valables aussi bien pour une installation Windows que pour une installation Linux. Les exemples que nous donnons s’appliquent a` ce dernier syste`me mais sont aise´ment transposables a` Windows. rootAu moment de l’initialisation d’un serveur MySQL, il n’y a que deux utilisateurs : [email protected] avec tous les droits sur toutes les bases, et l’utilisateur anonyme ’’@localhost qui n’a aucun droit sur aucune base (sauf pour Windows). Vous pouvez consulter le contenu de la table user (voir page 181 pour une description des droits d’acce`s) avec les commandes suivantes. % mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 to server version: 3.23.9 Type ’help’ for help. mysql> USE mysql; Database changed mysql> SELECT * FROM user; Au de´part, il est possible de se connecter sans entrer de mot de passe pour root, ce qui est tre`s dangereux. La premie`re chose a` faire est d’attribuer un mot de passe a` root avec la commande: mysql> SET PASSWORD FOR root=PASSWORD(’mdproot’) ; Bien entendu vous devez choisir un mot de passe raisonnablement difficile a` deviner. Vous pouvez alors vous connecter avec la commande suivante: % mysql -u root -p L’utilitaire mysql vous demande le mot de passe a` chaque connexion. Il est possible d’e´viter d’avoir a` effectuer ce controˆle du mot de passe re´petitivement´ en cre´ant un fichier de configuration, de´crit dans la section suivante. % mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g . Your MySQL connection id is 2 to server version: 3.23.9 Type ’help;’ or ’\h’ for help. mysql> DELETE FROM user WHERE user=’’; Creation´ de bases et d’utilisateurEtant´ connecte´ sous root (attention: il s’agit bien du root de MySQL, qui est diffe´rent du compte UNIX), on peut creér des bases et des utilisateurs. Par exemple: mysql> CREATE DATABASE Films; mysql> GRANT ALL PRIVILEGES ON Films.* TO [email protected] IDENTIFIED BY ’mdpAdmin’; Vous etesˆ maintenant en mesure de creér des tables dans la base, et d’y inse´rer des donneés. Tous les programmes d’acce`s a` MySQL prennent en compte un ou plusieurs fichiers de configuration. Chaque fichier indique des options pour le serveur ou les clients MySQL. Format d’un fichier de configurationUn fichier de configuration est au format ASCII, et comprend un ensemble de sections. Chaque section commence par une option [section] ou` section peut etreˆ server, client, ou le nom de l’un des programmes clients de MySQL. On trouve ensuite les valeurs des parame`tres pour le ou les clients de la section courante. Un exemple de fichier de configuration, nomme´ , est fourni dans le re´pertoire supportfiles. Voici une partie de ce fichier, illustrant la structure des parame`tres de configuration (NB: le caracte`re ’#’ indique une ligne de commentaires). # Pour tous les clients [client] port = 3306 socket = # Pour le serveur [mysqld] port = 3306 socket = skip-locking set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = thread_stack=128K # Start logging log # Pour le client mysql [mysql] no-auto-rehash La liste des parame`tres accepte´s par un programme est donneé par l’option --help. 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 utilise´s, ou le parame´trage par de´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. Quand il y a plusieurs serveurs, ce fichier, place´ dans le re´pertoire racine des bases d’un serveur, permet d’indiquer les options pour ce serveur en particulier. Place´ dans le re´pertoire $HOME d’un utilisateur, ce fichier donne les options et pre´ferences´ de cet utilisateur. On peut y placer le compte de connexion a` 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 etreˆ place´ dans C: . Malheureusement tout utilisateur ayant un compte sur la machine pourra lire son contenu. Evitez´ donc d’y placer des mots de passe. Configuration du serveurLe fichier est particulie`rement utile pour parame´trer le serveur. Entre autres options importantes, on peut: 1. choisir la langue pour les messages d’erreurs; 2. choisir la taille de la me´moire centrale alloueé au serveur; 3. fixer l’une des tre`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.
-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 parame`tres ci-dessus peut etreˆ utiliseé dans le fichier , a` l’inte´rieur de la section commanc¸ant par mysqld. Voici l’exemple d’un parame´trage:
language = french log log-update On a donc indique´, entre autres: 1. que les messages doivent etreˆ en franc¸ais (option language); 2. que toutes les connexions et requeˆtes a` MySQL sont conserveés dans un fichier log (dont le nom est, par de´faut, et l’emplacement le re´pertoire racine des bases de donneés); 3. que toutes les mises a` jour sont egalement´ conserveés dans un fichier de log (voir la section sur les sauvegardes incre´mentales, page 193); 4. que la me´moire cache pour les index est de 64 Me´gaoctets (voir la section sur l’optimisation des performances, page 197). Configuration d’un compte administrateurNous montrons maintenant comment configurer un compte administrateur qui veut se connecter, avec tout client de MySQL, a` la base mysql sous le compte root. Nous prenons comme exemple le client mysql: voici un extrait des parame`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. -E, --vertical Print the output of a query (rows) vertically Dans un environnement Unix, voici comment indiquer avec un fichier de configuration, que l’utilisateur mysql est l’administrateur de la base de donneés. On indique que son compte de connexion a` MySQL est root, on donne le mot de passe (mettez le voˆtre!), et la base par de´faut, mysql. 1. Copiez dans le re´pertoire $HOME de mysql, et renommez-le en . 2. Editez´ . Le fichier contient plusieurs sections de´diees´ respectivement aux parame`tres du serveur,du client, etc. Dans la section commenc¸ant par [client], ajoutez deux lignes comme indique´ ci-dessous: [client] user = root password = mdproot Et dans la section [mysql], de´finissez la base par de´faut: [mysql] database = mysql 3. Il ne reste plus qu’a` prote´ger ce fichier des regards indiscrets % chmod go-rwx Une fois ce fichier creé,´ la commande mysql, exe´cutee´ sous le compte UNIX mysql, vous connecte directement a` la base mysql sans avoir a` entrer le compte utilisateur, le mot de passe, et sans avoir a` faire USEmysql. Le principe est ge´neralisable´ a` tous les utilisateurs, en leur permettant une connexion automatique a` leur base de re´ference.´ 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 clients de MySQL, ce qui permet, sous le compte mysql, d’arreˆter le serveur sans entrer de mot de passe avec la commande. % mysqladmin shutdown Il existe de nombreux outils qui facilitent (au moins pour une prise de contact) la maintenance d’une installation MySQL. Nous de´crivons ci-dessous l’installation de phpMyAdmin, une interface d’administration HTML tre`s populaire. InstallationNous donnons l’exemple d’une installation de phpMyAdmin, sous Linux. L’installation sous Windows est pratiquement identique puisqu’il n’y a aucune compilation. Dans ce qui suit on suppose que le nume´ro de version est 2.0.2. 1. De´compresser les fichiers dans le re´pertoire /usr/local/apache/htdocs: % cd /usr/local/apache/htdocs % cp . % gunzip % tar xvf 2. On obtient un sous-re´pertoire de htdocs, nomme´ phpMyAdmin. 3. Editez´ le fichier et remplacez par (en supposant que vous pre´feriez´ le franc¸ais, bien suˆr). Et c’est fini! Il devient maintenant possible de ve´rifier que les serveurs MySQL et Apache tournent bien, et que phpMyAdmin est disponible. En acce´dant a` l’URL localhost/phpMyAdmin sur votre machine avec Netscape, la page d’accueil de phpMyAdmin sur votre nouvelle base MySQL devrait s’afficher. Notez que vous avez le droit de tout faire (creér des bases, des utilisateurs, etc), sans avoir entre´ un seul mot de passe, tant que vous n’avez pas donne´ un mot de passe au compte root de MySQL! Parametrage´Tous les ele´ments´ configurables sont en fait dans le fichier . La premie`re chose que l’on peut choisir est la langue de travail qui est par de´faut l’anglais. C’est de´ja` fait ci-dessus. Maintenant la partie importante est situeé au de´but du fichier. Elle contient la de´finition d’un tableau cfgServers a` deux dimensions qui comprend autant d’entreés que de serveurs MySQL sur la machine hoˆte. L’entreé indiceé par ’1’ correspond au premier serveur. Voici sa de´finition par de´faut. $cfgServers[1][’host’] = ’localhost’; $cfgServers[1][’port’] = ’’; // = port par défaut $cfgServers[1][’adv_auth’] = false; $cfgServers[1][’stduser’] = ’root’; $cfgServers[1][’stdpass’] = ’’; $cfgServers[1][’user’] = ’’; $cfgServers[1][’password’] = ’’; Les options host et port permettent de pre´ciser l’hoˆte du serveur MySQL, et le port d’e´coute. En principe les valeurs par de´faut conviennent. L’option advauth de´termine le type de protection utilise´ pour l’acce`s a` phpMyAdmin. Cas advauth=true Si l’option advauth est a` true, phpMyAdmin transmet au programme client, au moment de la premie`re demande d’acce`s d’un utilisateur, un document avec un en-teˆte HTML indiquant que l’utilisateur doit s’identifier. Le navigateur produit alors une feneˆtre demandant un nom et un mot de passe qui sont transmis a` phpMyAdmin quand l’utilisateur les a saisis. phpMyAdmin ve´rifie que ce compte correspond a` un compte MySQL valide. Si c’est le cas une session est ouverte. Ce fonctionnement soule`ve un petit proble`me: pour ve´rifier que le compte est correct, il faut disposer d’un autre compte pouvant interroger la base dictionnaire mysql! Ce deuxie`me compte doit etreˆ indique´ dans les champs stduser et stdpass. On peut donner le compte root qui a tous les droits sur la base mysql, mais il est un peu geˆnant de mettre en clair le mot de passe de root dans un fichier lisible sur le Web Un moindre mal est de creér un compte MySQL spe´cial phpAdmin qui a juste le droit d’inspecter les tables de mysql. mysql> GRANT select ON mysql.* TO phpAdmin -> IDENTIFIED by’mdpPhpAdmin’; Voici maintenant le parame´trage pour l’authentification d’un utilisateur au moment de la connexion. $cfgServers[1][’adv_auth’] = true; $cfgServers[1][’stduser’] = ’phpAdmin’; $cfgServers[1][’stdpass’] = ’mdpPhpAdmin’; $cfgServers[1][’user’] = ’’; $cfgServers[1][’password’] = ’’; phpMyAdmin se connectera donc avec le compte phpAdmin/mdpPhpAdmin pour ve´rifier le compte saisi interactivement par l’utilisateur. Cas advauth=false Si vous etesˆ seul a` utiliser phpMyAdmin, l’option advauth=false est envisageable. Elle impose quand meˆme d’indiquer un mot de passe utilisateur dans le fichier, par exemple: $cfgServers[1][’adv_auth’] = false; $cfgServers[1][’stduser’] = ’’; $cfgServers[1][’stdpass’] = ’’; $cfgServers[1][’user’] = ’adminFilms’; $cfgServers[1][’password’] = ’mdpAdmin’; Le proble`me, alors, et que tout le monde peut acce´der au site phpMyAdmin et se connecter automatiquement a` MySQL. Il est impe´ratif de prote´ger le re´pertoire phpMyAdmin avec le me´canisme d’authentification de Apache. Voici comment proce´der. 1. Dans un re´pertoire quelconque accessible par Apache, nomme´ rep dans ce qui suit, creéz un fichier d’authentification avec le programme htpasswd. Par exemple: % htpasswd -c adminPHP Le programme vous demande un mot de passe et creé un fichier qui contient une entreé adminPHP/motDePasse. 2. Indiquez a` Apache que le re´pertoire phpMyAdmin est prote´ge´ par le fichier . Vous pouvez ajouter la section suivante dans le fichier (sous-re´pertoire apache/conf). <Directory /usr/local/apache/htdocs/phpMyAdmin> AuthName "phpMyAdmin" AuthUserFile AuthType Basic require valid-user </Directory> Bien entendu il faut remplacer rep par le chemin d’acce`s a` . Apre`s avoir relance´ Apache, le compte sera syste´matiquement demande´ pour tout acce`s a` phpMyAdmin. Comme tout fichier contenant des mots de passe, doit etreˆ prote´ge´ des regards indiscrets. Limitez les droits en lecture au compte utilisateur de Apache, et les droits en ecriture´ au compte du webmestre du site. AnnexeB Ref´ erence´ MySQL Sommaire B.1 Types de donnees´ MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 B.3 Fonctions SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Cette annexe est consacreé aux commandes, langages et utilitaires de MySQL. Nous commenc¸ons par les types de donneés utilisables pour les attributs des tables, avant de passer en revue toutes les commandes du langage SQL et des extensions proposeés par MySQL. B.1 Types de donnees´ MySQL MySQL est remarquablement conforme a` la norme SQL ANSI, contrairement a` d’autres SGBD, plus anciens, dont le syste`me de types etait´ de´ja` bien etabli´ avant la parution de cette norme (en 1992). MySQL propose egalement´ quelques variantes et extensions, la principale etant´ la possibilite´ de stocker des attributs de type Binary Long Object (BLOB). Le tableau B.1 re´sume la liste des types d’attributs, donne la taille de stockage utiliseé par MySQL, et indique si le type fait partie ou non de la norme SQL ANSI. Types numeriques´ exactsLa norme SQL ANSI distingue deux cate´gories d’attributs nume´riques: les numeriques´ exacts, et les numeriques´ flottants. Les types de la premie`re cate´gorie (essentiellement INTEGER et DECIMAL) permettent de spe´cifier la pre´cision souhaiteé pour un attribut nume´rique, et donc de repre´senter une valeur exacte. Les nume´riques flottants correspondent aux types couramment utilise´s en programmation (FLOAT, DOUBLE) et ne repre´sentent une valeur qu’avec une pre´cision limiteé. Tous les types nume´riques acceptent l’option ZEROFILL qui indique que l’affichage d’une valeur nume´rique se fait avec la largeur maximale, les chiffres etant´ comple´tes´ par des ze´ros. Par exemple la valeur 3 stockeé dans un type INTEGER ZEROFILL sera afficheé 0000000003. INTEGER[(M)] [UNSIGNED] [ZEROFILL] Le type INTEGER peut etreˆ comple´te´ par le mot-cle´ UNSIGNED qui spe´cifie si le stockage comprend un bit de signe ou non. Cette option (qui ne fait pas partie de la norme SQL) a un impact sur l’intervalle des . On peut faire d’autre choix, mais les choses deviennent plus compliqueés. |