MySQL et son installation
MySQL est le serveur de bases de données le plus répandu pour les serveurs web. Il allie une grande souplesse d'utilisation et de nombreuses fonctionnalités, tandis que sa mise en œuvre reste simple.
Installation
Grâce à APT sur Debian nous installons les paquets correspondants :
apt-get install mysql-server mysql-client mysql-common
Configuration
La configuration de base est stockée dans /etc/mysql/my.cnf
vi /etc/mysql/my.cnf
Voici quelques options intéressantes à modifier par défaut
- language = /usr/share/mysql/french
- Choisir la langue par défaut pour les messages du serveur (français)
- key_buffer = 32M
- Taille du cache des index
- query_cache_limit = 2M
- Taille limite du cache par requête
- query_cache_size = 32M
- Taille totale du cache des requêtes
-
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10 - Désactiver le log binaire en commentant ces deux lignes grâce à # (le log binaire n'est utile que dans le cas de réplications avec serveurs maître-esclave)
- log_slow_queries = /var/log/mysql/mysql-slow.log
- Mettre en log les requêtes lentes (utile pour les repérer et les optimiser)
- long_query_time = 2
- Durée (en secondes) à partir de laquelle une requête est considérée comme lente
[mysqld]
- default-character-set = utf8
- Jeu de caractères par défaut pour le serveur
- default-collation = utf8_general_ci
- Collation du jeu de caractères
[client]
- default-character-set = utf8
- Jeu de caractères par défaut pour le client
N'oubliez pas de recharger le serveur suite à ces modifications :
/etc/init.d/mysql reload
Optimisation
Si vous désirez optimiser cette configuration (après l'avoir exploitée, les statistiques n'étant pas représentatives au départ), faites appel à MySQLTuner. Il s'agit d'un script écrit en Perl qui ne modifiera pas votre configuration mais vous proposera des améliorations.
wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl
Sécurisation
Il est facile de mettre en place quelques règles simples pour sécuriser le serveur, grâce au script :
mysql_secure_installation
Et en répondant à quelques questions :
- Set root password ? Y
- Permet de modifier le mot de passe root (de mysql)
- Remove anonymous users ? Y
- Retire les accès anonymes
- Disallow root login remotely ? Y
- Retire l'accès root distant (recommandé)
- Remove test database and access to it ? Y
- Retire la base test et ses accès
- Reload privilege tables now ? Y
- Recharge les privilèges suite aux modifications
Connexion
Vous pourrez vous connecter en ligne de commande grâce au client :
mysql -ulogin -pmotdepasse
Ou bien en utilisant un client graphique, voire aussi phpMyAdmin (installation par défaut : apt-get install phpmyadmin
puis éditez config.inc.php ou recopiez-le à partir de config.sample.inc.php)
Commandes shell utiles
- mysqldump -ulogin -pmotdepasse nom_base --opt >fichier.sql
- Exporte la base nom_base vers fichier.sql
- mysqldump -ulogin -pmotdepasse --all-databases --opt >fichier.sql
- Exporte toutes les bases vers fichier.sql
- mysql -ulogin -pmotdepasse <fichier.sql
- Importe les instructions du fichier SQL
- mysqladmin
- Toute une collection d'outils pour administrer le serveur.
L'option --opt combine --add-drop-table --add-locks --all --extended-insert --quick --lock-tables. Référez-vous à la documentation (man mysqldump) pour plus de renseignements.
Commandes de base en ligne de commande MySQL (client)
Terminez toutes vos commandes avec le caractère point-virgule ;
- SHOW DATABASES
- Liste les bases de données
- SHOW STATUS
- Affiche le statut du serveur
- USE nom_base
- Sélectionne la base par défaut
- SHOW TABLES
- Affiche les tables de la base courante
- DESCRIBLE table
- Affiche la structure de la table
- SELECT * FROM table
- Affiche le contenu de la table
- CREATE DATABASE base
- Crée une nouvelle base de données
Pour avoir toutes les commandes à portée de la main, n'oubliez pas le Memento MySQL aux éditions Eyrolles ;)
Au sommaire :
- Création d'une base de tables
- Connexion à une base de données
- Renommer/supprimer bases, tables et clés
- Type de champs
- Type d'index (clés)
- Gestion des utilisateurs
- Modifier la structure d'une table
- Requêtes
- Requêtes conditionnelles avec WHERE
- Déclencheurs (TRIGGER)
- Groupage et tri
- Fonctions mathématiques
- Unions et jointures
- Fonctions diverses
- Manipulation de chaînes de caractères
- Fonctions de dates
- Procédures stockées et fonctions
- Transactions
- Vues
- Administration et performances
- Variables serveur