Serveur de base de données Installation : Etant familliarisé avec le serveur MySQL(serveur de base de données), nous installerons celui-ci. Coté Serveur : Installer le paquet mysql-server avec la commande aptitude install mysql-server. Une fois installé MySQL devrait se lancer, sinon lancez le avec la commande /etc/init.d/mysql start . Configuration La configuration de base est stockée dans /etc/mysql/my.cnf 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 Sécurisation de la base de donnée : 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 –u login –p motdepasse Ou bien en utilisant un client graphique, voire aussi phpMyAdmin Commandes shell utiles mysqldump –u login –p motdepasse nom_base >fichier.sql Exporte la base nom_base vers fichier.sql mysqldump –u login –p motdepasse --all-databases >fichier.sql Exporte toutes les bases vers fichier.sql mysql –u login –p motdepasse <fichier.sql Importe les instructions du fichier SQL mysqladmin Toute une collection d'outils pour administrer le serveur. 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 Create user « nom_utilisateur » identified by « ‘mot_de_passe’ » Crée un nouveau utilisateur Select host, user, password from mysql.user ; Voir la liste des utilisateur GRANT ALL PRIVILEGES ON `test` Accorder des droit a un utilisateur Coté Client : Installer le paquet mysql-client avec la commande aptitude install mysqlclient. Pour utiliser le client MySQL tapez la commande mysql suivi du login et du password voire l'adresse ip si l'accès se fait à distance (ex: mysql -h 192.168.10.2 -u user -p password). Configuration : Pour accéder à une base de données et y avoir des privilèges, il faut créer un utilisateur et lui donner les privilèges sur une base ou table souhaitée. Coté Serveur : Créer une base de données avec la commande 'CREATE DATABASE nom_base ;'. Créer l'utilisateur avec la commande CREATE USER 'utilisateur'@'IP_adresse' IDENTIFIED BY 'mot_de_passe' ; Donner les privilèges sur la base 'BAMK' à l'utilisateur 'utilisateur' avec la commande GRANT ALL ON BAMK.* TO 'utilisateur'@'IP_adresse' ; Modification du port d'écoute(bind-address) avec un éditeur de texte 'pico /etc/mysql/my.cnf', le but est de rediriger le port d'écoute vers tout. La ligne du bind-address doit-être : bind-address = 0.0.0.0 Crontab : Pour sauvegarder périodiquement une base de donnée mysql : Ensuite pour éxécuter périodiquement se s ript automatiquement en mode commande tappez crontab –e Rajoutez cette ligne a la fin du fichier, cette ligne signifie que l’on veut exécuter le script sauvegarde.sh tout les samedi a 21h m : minutes (de 0 à 59) h : heures (de 0 à 23) dom : jour du mois (de 1 à 31) mon : mois (1 à 12 ou jan, feb, mar, ...) dow : jour de la semaine (0 ou 7=dimanche, 1=lundi, 2=mardi, ...) Tous (en fonction de la colonne où elle est placée, tous les jours, tous les mois, toutes les heures, ....) / : Répetition - : Intervalle , : Plusieurs valeurs Quelques exemples : */1 * * * * commande : Toutes les minutes de toutes les heures de tous les jours de tous les mois 0 10 * * 1-5 commande : Du lundi au samedi (1-6) à 10h00 0 21 4,14,24 * * commande : Les 4, 14 et 24 de chaque mois à 21h00 19 8-16/1 * 1,2 1-6 commande : Toutes les heures de 8h à 16h, à la 19ème minute, en Janvier et Février tous les jours sauf le dimanche