« Le système d'exploitation GNU-Linux/La base de données MySQL » : différence entre les versions
Contenu supprimé Contenu ajouté
Les deux paragraphes vides sont déjà traités dans le livre MySQL |
|||
Ligne 9 :
== Moteurs de stockage ==
Par défaut,
Toutefois,
* '''InnoDB''' : support des transactions (compatible ACID), des clés étrangères et de l'intégrité différentielle
Ligne 19 :
* '''BDB''' : Berkeley DB est un format de stockage très répandu (utilisé par exemple par OpenLDAP) et supporte les transactions (compatible ACID)
* '''HEAP''' ou '''MEMORY''' : ces tables sont stockées en mémoire vive (RAM), elles sont très rapides mais ne survivent pas à un redémarrage de
* '''CSV''' : les données sont stockées dans des fichiers au format CSV ('''C'''omma '''S'''eparated '''V'''alues)
Ligne 63 :
== Installation ==
Pour installer
# apt-get install
== Fichier de configuration ==
Le fichier de configuration est '''/etc/
Dans ce fichier de configuration on trouve plusieurs sections :
# Section du client
[client]
port = 3306
socket = /var/run/
# Section de
[
socket = /var/run/
nice = 0
# Section du serveur
[
# Utilisateur qui lance le daemon
user =
# Fichier qui contient le PID du processus
pid-file = /var/run/
# Fichier socket qui permet une communication locale avec
socket = /var/run/
# Port sur lequel écoute
port = 3306
# Répertoire de base de
basedir = /usr
# Répertoire contenant les bases de données
datadir = /var/lib/
# Répertoire temporaire
Ligne 108 :
# Permet de personnaliser le langage
language = /usr/share/
#
skip-external-locking
# Adresse IP sur lequel écoute
bind-address = 127.0.0.1
# Taille des caches
key_buffer = 16M
max_allowed_packet = 16M
Ligne 127 :
# Emplacement du fichier de Log
log = /var/log/
# On peut logger les
#log_slow_queries = /var/log/
#long_query_time = 2
#log-queries-not-using-indexes
# Permet d'exécuter
# chroot = /var/lib/
# Options pour définir les certificats
# ssl-ca=/etc/
# ssl-cert=/etc/
# ssl-key=/etc/
# Section pour
[
quick
quote-names
Ligne 151 :
# Section pour ?
[
#no-auto-rehash # faster start of
Ligne 160 :
Chaque fois que l'on modifie ce fichier, il faut relancer
# /etc/init.d/
Les bases de données sont
Pour se connecter à
#
Ligne 180 :
Par exemple, nous avons la table suivante :
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
Ligne 192 :
Nous voulons insérer le fichier suivant :
# cat /var/lib/
Anne;Aconda
Clara;Sheller
Ligne 200 :
Pour importer le fichier dans la table contact, nous tapons la commande suivante :
FIELDS TERMINATED BY ";" (prenom,nom);
Query OK, 4 rows affected (0.00 sec)
Ligne 207 :
Vérification :
+----+---------+---------+
| id | prenom | nom |
Ligne 218 :
4 rows in set (0.02 sec)
Pour connaître l'ensemble des options disponibles de la commande '''LOAD DATA INFILE''', voir la documentation
=== SELECT INTO OUTFILE ===
Ligne 224 :
La commande SQL '''SELECT INTO OUTFILE''' permet d'exporter des données de la base de données dans un fichier texte.
INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ';'
Ligne 236 :
Remarque : C'est l'utilisateur '''
# ls -l /tmp/result.txt
-rw-rw-rw- 1 {{rouge|
== Les fichiers de données ==
Les fichiers contenant les données sont stockés dans '''/var/lib/
'''{{rouge|/var/lib/
Chaque base de données dispose de son propre répertoire '''/var/lib/
Le fichier '''db.opt''' contient la configuration de la base de données (encodage des caractères ...).
Ligne 267 :
== Les fichiers journaux ==
Les fichiers journaux sont contenus dans le répertoire '''/var/log/
Il y a 3 fichiers importants :
* '''{{bleu|
* '''{{bleu|
* '''{{bleu|
Pour activer les fichiers log, il faut décommenter les deux lignes dans '''/etc/
log = /var/log/
log_slow_queries = /var/log/
Puis relancer
/etc/init.d/
== Les documentations ==
=== Package Debian
Debian propose un package contenant les documentations
# apt-get install
La documentation sur
Dans ce répertoire, on trouve des pages HTML qui contiennent toute la documentation de
=== Documentations en ligne ===
'''Sur le site de
- [http://dev.
- [http://dev.
Ligne 312 :
=== Listes de diffusion ===
'''[http://lists.
=== IRC ===
Canal '''#
== Modifications des privilèges ==
Ligne 323 :
Il y a quatre techniques pour modifier les privilèges :
* modifier directement les tables '''user''' et '''db''' de la base de données '''
* utiliser les instructions SQL '''GRANT''' et '''REVOKE'''
Ligne 329 :
Exemple : enlever tous les droits à l'utilisateur '''alex''' sur la base de données '''dbalex''' :
Exemple : donner tous les droits à l'utilisateur '''alex''' sur la base de données '''dbalex''' :
on peut également spécifier les droits à donner :
* utiliser la commande shell '''
* utiliser un outil graphique de type
== Les commandes d'administration ==
Utile : pour ne pas avoir à spécifier le mot de passe du root chaque fois que l'on invoque une commande '''
# echo -e "[client]\npassword=root" > ~/.my.cnf && chmod 600 ~/.my.cnf
Ligne 356 :
password='''root'''
===
La commande '''
Voici les options les plus courantes :
Options de base (communes à la plupart des commandes
* -h (--host=) : définit '''l'hôte''' hébergeant la base de données
* -D (--database=) : définit '''la base''' sur laquelle l'utilisateur va se connecter.
* -u (--user=) : précise '''le nom d'utilisateur
* -P (--port=) : détermine le '''port à utiliser''' pour la connexion
* -p (--password=) : demande la saisie du '''mot de passe''' ''(obligatoire si l'utilisateur a été défini pour se connecter avec un mot de passe)''
Ligne 372 :
Exemple :
$
PASSWORD:
Ligne 384 :
Pour aller plus loin :
#
Donne la liste et un bref descriptif de toutes les options à utiliser avec la commande
===
La commande '''
Son fonctionnement est particulièrement intéressant car '''elle génère les commandes SQL permettant de
Pour exporter la base de donnée « myBase », on utilise la commande suivante :
#
Ceci fera l'export dans un fichier « myBase_backup.sql ».
Pour importer une base de données sauvegardée via '''
#
L'option '''--compatible''' permet de spécifier à
#
Cette option peut prendre les valeurs suivantes : ansi,
En utilisant '''
#
===
...
#
--lines-terminated-by="\n"
--columns=prenom,nom
dbalex /var/lib/
Enter password:
dbalex.contacts: Records: 4 Deleted: 0 Skipped: 0 Warnings: 4
Ligne 430 :
Attention : le nom du fichier (sans extension) doit être le même que la table.
===
La commande '''
$
OPTIONS :
Ligne 454 :
* '''{{bleu|password}}''' : change le mot de passe
* '''{{bleu|old-password}}''' : change le mot de passe en utilisant l'ancien algorithme de chiffrement
* '''{{bleu|ping}}''' : teste si
* '''{{bleu|reload}}''' : recharge la configuration
* '''{{bleu|refresh}}''' : vide les caches
* '''{{bleu|shutdown}}''' : arrête
* '''{{bleu|status}}''' : connaitre des informations sur l'état du serveur
* '''{{bleu|extended-status}}''' : connaitre des informations détaillées sur l'état du serveur
* '''{{bleu|proc}}''' ou '''{{bleu|processlist}}''' : connaitre les utilisateurs connectés
* '''{{bleu|debug}}''' : Passe
* '''{{bleu|kill}}''' : Permet d'arrêter des threads. On indique le numéro de connexion à terminer obtenu avec '''proc''' ou '''processlist'''
* '''{{bleu|start-slave}}''' : Démarre la réplication sur le serveur de réplication esclave
* '''{{bleu|stop-slave}}''' : Arrête la réplication sur le serveur de réplication esclave
* '''{{bleu|variables}}''' : Affiche les variables internes
* '''{{bleu|version}}''' : Affiche le numéro de version de
* ...
Utile : j'ai perdu le mot de passe du compte '''root'''
1. On arrête
# /etc/init.d/
2. On relance le daemon '''
#
3. Depuis une autre fenêtre, on se connecte à
#
4. On met à jour la table '''user''' :
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3 Changed: 0 Warnings: 0
Query OK, 0 rows affected (0.00 sec)
5. On arrête proprement le daemon '''
# killall
6. On relance
# /etc/init.d/
===
La commande '''
Ligne 515 :
Exemple : vérifier l'intégrité de toutes les tables de la base de données '''testdb''' :
#
testdb.client OK
testdb.client2 OK
Ligne 521 :
Vérifier uniquement la table '''client''' :
#
testdb.client OK
Vérifier les tables '''user''' et '''db''' de la base de données '''
#
'''Remarque''' : '''
=== myisamchk ===
La commande '''myisamchk''' permet la restauration d'une table ou plusieurs tables endommagées à la suite de crash répétés du démon
'''{{rouge|Attention}}''' : {{rouge|'''myisamchk''' intervient directement sur les fichiers, il se passe de '''
'''Quelques précautions d'usage:''' : Si vous utilisez {{bleu|myisamchk}} pour réparer ou optimiser les tables, vous devez toujours vous assurer que {{vert|
'''{{rouge|Attention}}''' : '''Vos tables peuvent être corrompues si le serveur {{rouge|
Ligne 548 :
On indique à '''myisamchk''' les tables à vérifier en désignant les fichiers index '''MYI''' :
# myisamchk /chemin/bases/
On peut également spécifier toutes les tables comme ceci :
# myisamchk /chemin/bases/
Voire carrément vérifier toutes les tables de toutes les bases :
# myisamchk /chemin/bases/
La commande affiche un rapport d'analyse, et si tout est OK, ne signale pas d'erreur :
# myisamchk /var/lib/
Checking MyISAM file: /var/lib/
Data records: 542 Deleted blocks: 0
- check file-size
Ligne 579 :
Si vous voulez uniquement vérifier une table sans que la commande produise un affichage, il faut utiliser l'option '''-s''' (ou '''--silent''').
===
La commande '''
Ecrit en Perl, ce script a besoin des modules '''DBI''' et '''DBD::
#
Option p is ambiguous (password, port)
Password for user to connect to MySQL:
Ligne 655 :
'''Les différentes options de {{vert|
* '''{{bleu|--help}}''' (ou '''{{bleu|-h}}''') : permet d'afficher l'aide
* '''{{bleu|--host}}''' (ou '''{{bleu|-h}}''') : se connecte au serveur
* '''{{bleu|--password}}''' (ou '''{{bleu|-p}}''') : pour qu'il demande le mot de passe à la connexion
Ligne 667 :
* '''{{bleu|--user}}''' (ou '''{{bleu|-u}}''') : se connecte au serveur avec le nom de compte donné
===
La commande '''
Pour cela, la commande bloque les tables afin qu'il n'y ai pas de modification des tables durant la copie.
Ligne 677 :
Exemple d'utilisation :
#
Locked 2 tables in 0 seconds.
Flushed tables (`testdb`.`client`, `testdb`.`client2`) in 0 seconds.
Ligne 683 :
Copying indices for 0 files...
Unlocked tables.
Vérification :
Ligne 689 :
# ls -l /tmp/testdb/
total 44
-rw-rw---- 1
-rw-rw---- 1
-rw-rw---- 1
-rw-rw---- 1
-rw-rw---- 1
-rw-rw---- 1
-rw-rw---- 1
== Autres programmes utiles ==
===
'''
===
[[Image:MySQLadministrator1.jpg]]
Ligne 709 :
{{TODO|rajouter descriptif}}
===
[[Image:MySQLQueryBrowser.jpg]]
Ligne 715 :
{{TODO|rajouter descriptif et une copie écran}}
===
{{TODO|rajouter descriptif et une copie écran}}
[[Catégorie:MySQL|Linux]]
|