MySQL est un système de gestion de base de données (SGDB).
Plus d'informations sur Wikipédia : http://fr.wikipedia.org/wiki/MySQL
Installation du serveur
On se place sur une Debian Lenny 5.0
- Installation du logiciel, la partie serveur et le client (qui permettra de faire des requêtes localement) :
# aptitude install mysql-server mysql-client
On donne au compte root du système Linux les codes d'accès au compte root de MySQL. Ainsi, lorsqu'on sera root sur la machine, on pourra faire des requêtes en tant que root sur MySQL très simplement. Ca aide :
; contenu du fichier /root/.my.cnf [client] user = root password = "MotDePasse"
- Un peu de protection :
# chown root:root /root/.my.cnf # chmod 600 /root/.my.cnf
- Et un petit test :
# mysqlshow +--------------------+ | Databases | +--------------------+ | information_schema | | mysql | +--------------------+
- C'est fini !
Personnalisation de la configuration
Toute configuration personnalisée devrait être placée dans /etc/mysql/conf.d/local.cnf.
Voici un exemple de configuration personnalisée qui pourrait être utilisé :
[mysqld] language = /usr/share/mysql/french bind-address = 127.0.0.1 log_slow_queries = /var/log/mysql/mysql-slow.log [mysqldump] quote-names
Note : un exemple plus complet, dédié au support Unicode, est disponible dans Etude/Unicode.
Ouvrir l'accès par TCP/IP
Pour rendre le serveur mysql disponible sur le réseau, une facon simple est de modifier le fichier /etc/mysql/my.cnf en changeant la ligne
bind-address = 127.0.0.1
en
bind-address = <adresse ip de la machine abritant le serveur>
Puis, ne pas oublier de préciser, lors de la configuration des droits d'accès à une base de données pour un utilisateur, si c'est pour user@localhost ou user@* (donnant ainsi la possibilité d'accéder à la bd à partir de n'importe quelle machine).
Je (nacer) ne sais pas si c'est la seule façon de faire, ni si c'est la méthode la plus sécurisée, mais c'est celle que j'utilise.
Gestion des logs
à écrire
Ce qu'il ne faut pas faire
installer phpmyadmin quand vous n'en avez pas besoin : apprenez un peu le langage SQL, vous serez plus efficace
Le langage SQL
SQL fait partie des langages qu'un administrateur système doit connaître, sinon maîtriser. Si ce n'est pas votre cas, voici quelques bonnes pages pour apprendre ce qu'il est nécessaire de savoir :
sur Wikibooks : http://fr.wikibooks.org/wiki/Programmation_SQL
sur Wikiversity : http://fr.wikiversity.org/wiki/SQL
et en anglais : http://en.wikibooks.org/wiki/SQL ou http://en.wikibooks.org/wiki/MySQL/Language
Exemples de manipulation avec MySQL
- Créer une base
$ mysql -u <nom utilisateur> -h <nom d'hôte> -p $ mysql> create database <nom de la bd>;
- Créer une table dans la base
- Créer un utilisateur MySQL associé à une base
Deux facons (au moins) de procéder:
- D'abord créer l'utilisateur, ensuite lui associer des droits sur une base de données:
$ create user <nom utilisateur> identified by <mot de passe>
- Créer l'utilisateur directement en lui octroyant les droits sur une bd:
$ grant all on <nom de la bd>.* to <nom utilisateur>@'localhost' identified by <mot de passe>
Accéder aux données avec le client mysql (en ligne de commande)
Pour voir la liste des bases de données:
$ mysql> show databases;
Pour utiliser une base de données en particulier:
$ mysql> use <nom de la bd>;
Pour voir la liste des tables de la bd:
$ mysql> show tables;
Pour voir la structure d'une table en particulier:
$ mysql> describe <nom de la table>;
Ajouter et modifier des données avec le client mysql
Récupération de bases MySQL à partir d'un disque endommagé (/var/lib/mysql accessible néammoins)
En principe, ce genre de situation ne doit pas arriver si les sauvegardes sont bien faites. Mais au cas où ...
- Disposer d'un serveur mysql fonctionnel et s'assurer qu'il s'agit d'un serveur de la même version que celui en panne. Pour voir la version, regarder dans le fichier "/var/lib/mysql/mysql_upgrade_info".
- Arrêter le serveur fonctionnel
- Copier le contenu de /var/lib/mysql du disque défectueusement vers le dossier correspondant sur le serveur fonctionnel, à l'exception du dossier mysql.
- S'assurer que les sous dossiers de /var/lib/mysql appartiennent tous à l'utilisateur "mysql"
ajout : je crois qu'il existe un outil qui permet de "checker" l'état des bases de données avant de relancer le serveur... ? à confirmer svp -- ThomasNoël 2008-10-21 08:57:33
Il s'appelle mysqlcheck. Il est lancé par le script /etc/mysql/debian-start à chaque (re)démarrage.
- Relancer le serveur
- Vérifier que les bd, tables et données sont bien lisibles.
Sauvegarde et restauration de bases MySQL
à écrire, en expliquant la problématique de la sauvegarde à chaud.