Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| utilisateurs:bcag2:sql [Le 14/11/2017, 21:40] – bcag2 | utilisateurs:bcag2:sql [Le 05/11/2025, 11:26] (Version actuelle) – supprimée bcag2 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | ||
| - | ---- | ||
| - | |||
| - | ====== SQL ====== | ||
| - | |||
| - | Le langage informatique [[wpfr> | ||
| - | |||
| - | Le but de cette page n'est pas d' | ||
| - | |||
| - | <note tip>Les manipulations suivantes sont en ligne de commande. \\ | ||
| - | Pour un usage occasionnel, | ||
| - | |||
| - | ===== Utilisation ===== | ||
| - | |||
| - | ==== Lancer la console SQL ou le gestionnaire graphique ==== | ||
| - | |||
| - | Vous arriverez alors sur un prompt du type : | ||
| - | |||
| - | mysql> | ||
| - | |||
| - | Vous pouvez alors taper vos requêtes MySQL. N' | ||
| - | |||
| - | < | ||
| - | mysql> select * from | ||
| - | -> | ||
| - | </ | ||
| - | |||
| - | Ce passage vous indique que la requête n'est pas terminée. Vous pouvez entrer vos requêtes de cette façon sur plusieurs lignes et enfin la clore avec le « **;** ». | ||
| - | |||
| - | ==== Sélectionner la base de données à utiliser ==== | ||
| - | |||
| - | Soit directement lorsque vous lancez le client MySQL en [[: | ||
| - | |||
| - | mysql -u root -D votre_base | ||
| - | |||
| - | Soit une fois connecté à MySQL en tapant la [[: | ||
| - | |||
| - | mysql> use votre_base | ||
| - | |||
| - | |||
| - | ==== Configuration en UTF-8 ==== | ||
| - | Il suffit d' | ||
| - | < | ||
| - | character-set-server=utf8 | ||
| - | skip-character-set-client-handshake | ||
| - | </ | ||
| - | |||
| - | puis de relancer le serveur mysql : | ||
| - | |||
| - | sudo service mysql restart | ||
| - | |||
| - | Vous pouvez vérifier le résultat une fois loggé dans mysql grâce à la commande suivante : | ||
| - | |||
| - | <code SQL> | ||
| - | SHOW VARIABLES LIKE ' | ||
| - | </ | ||
| - | |||
| - | Résultat : | ||
| - | |||
| - | < | ||
| - | mysqld> SHOW VARIABLES LIKE ' | ||
| - | +--------------------------+----------------------------+ | ||
| - | | Variable_name | ||
| - | +--------------------------+----------------------------+ | ||
| - | | character_set_client | ||
| - | | character_set_connection | utf8 | ||
| - | | character_set_database | ||
| - | | character_set_filesystem | binary | ||
| - | | character_set_results | ||
| - | | character_set_server | ||
| - | | character_set_system | ||
| - | | character_sets_dir | ||
| - | +--------------------------+----------------------------+ | ||
| - | 8 rows in set (0.00 sec) | ||
| - | </ | ||
| - | |||
| - | ===== Quelques requêtes SQL ===== | ||
| - | |||
| - | Toutes ces commandes sont à entrer dans le prompt de MySQL une fois connecté au serveur. (Voir comment [[# | ||
| - | |||
| - | |||
| - | ==== Base de donnée ==== | ||
| - | |||
| - | === Utiliser une base de données existante === | ||
| - | |||
| - | <code SQL> | ||
| - | use nom_de_la_base; | ||
| - | </ | ||
| - | |||
| - | === Créer une base de données === | ||
| - | |||
| - | <code SQL> | ||
| - | create database nom_de_la_base; | ||
| - | </ | ||
| - | |||
| - | === Liste des bases de données === | ||
| - | |||
| - | <code SQL> | ||
| - | show databases ; | ||
| - | </ | ||
| - | |||
| - | === Supprimer une base de données === | ||
| - | |||
| - | <code SQL> | ||
| - | drop database nom_de_la_base; | ||
| - | </ | ||
| - | |||
| - | === Importer une base de données située dans le répertoire courant (base de donnée exportée en .sql) === | ||
| - | |||
| - | <code SQL> | ||
| - | source fichier.sql; | ||
| - | </ | ||
| - | |||
| - | |||
| - | ==== Tables ==== | ||
| - | |||
| - | === Liste des tables de la base de données active === | ||
| - | |||
| - | <code SQL> | ||
| - | show tables; | ||
| - | </ | ||
| - | |||
| - | === Structure d'une table === | ||
| - | |||
| - | <code SQL> | ||
| - | describe nom_table; | ||
| - | </ | ||
| - | |||
| - | === Renommer une table === | ||
| - | |||
| - | <code SQL> | ||
| - | alter table nom_table rename as nouveau_nom; | ||
| - | </ | ||
| - | |||
| - | Pour la syntaxe des requêtes SQL, reportez-vous à la [[http:// | ||
| - | |||
| - | |||
| - | ==== Utilisateurs ==== | ||
| - | |||
| - | === Créer un utilisateur === | ||
| - | |||
| - | <code SQL> | ||
| - | create user " | ||
| - | </ | ||
| - | |||
| - | === Définir un mot de passe === | ||
| - | |||
| - | <code SQL> | ||
| - | set password for " | ||
| - | </ | ||
| - | |||
| - | === Supprimer un utilisateur === | ||
| - | |||
| - | <code SQL> | ||
| - | drop user " | ||
| - | </ | ||
| - | |||
| - | === Lister les utilisateurs === | ||
| - | |||
| - | <code SQL> | ||
| - | select user from mysql.user; | ||
| - | </ | ||
| - | |||
| - | |||
| - | ==== Privilèges ==== | ||
| - | |||
| - | === Donner tous les droits sur une base de données à un utilisateur précis === | ||
| - | |||
| - | <code SQL> | ||
| - | grant all on nom_base.* to " | ||
| - | </ | ||
| - | |||
| - | === Supprimer les droits sur une base de données à un utilisateur précis === | ||
| - | |||
| - | <code SQL> | ||
| - | revoke all privileges on nom_base.* from " | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Autres opérations ===== | ||
| - | |||
| - | Qt4 avec Mysql: | ||
| - | |||
| - | Installer la librairie pour mysql afin de l' | ||
| - | |||
| - | < | ||
| - | |||
| - | ==== Sauvegarde et importation ==== | ||
| - | |||
| - | Pour **exporter** la base de donnée « maBase », utilisez la commande : | ||
| - | |||
| - | mysqldump -u root -p maBase > maBase_backup.sql | ||
| - | |||
| - | Ceci fera l' | ||
| - | |||
| - | Pour exporter une table (par exemple // | ||
| - | | ||
| - | mysqldump -u root -p maBase ma_table > ma_table.sql | ||
| - | |||
| - | Ainsi nous aurons une exportation seulement de la table // | ||
| - | |||
| - | Pour **importer** une base de données ou une sauvegarde sur « maBase », utilisez la commande : | ||
| - | |||
| - | mysql -u root -p maBase < maBase_backup.sql | ||
| - | |||
| - | Puis tapez votre mot de passe. | ||
| - | |||
| - | <note tip> | ||
| - | Si vous souhaitez mettre en place une solution de sauvegarde automatique de bases de données à intervalle régulier, rendez-vous sur le tutoriel traitant de la [[: | ||
| - | </ | ||
| - | |||
| - | D' | ||
| - | |||
| - | |||
| - | ==== Restauration à partir du dump du datadir ==== | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | Si vous n'avez pas pu faire un backup pour une raison quelconque (par exemple, vous récupérez un disque dur dont le système est mort), on peut sauvegarder le répertoire « / | ||
| - | |||
| - | Pour restaurer vos bases une par une, suivez la procédure ci-dessous (après avoir d' | ||
| - | |||
| - | Créer une base de données du même nom que celle que vous voulez restaurer : | ||
| - | |||
| - | echo " | ||
| - | |||
| - | Copier les fichiers du dump de la base de données (les *.FRM, *.MYD, *.MYI, *.opt), dans le dossier que MySQL a créé pour votre base de données : | ||
| - | |||
| - | cd ~/ | ||
| - | sudo cp * / | ||
| - | |||
| - | Changer les droits sur les fichiers copiés : | ||
| - | |||
| - | sudo chmod -R ug+rw / | ||
| - | sudo chown -R mysql:mysql / | ||
| - | |||
| - | Voilà, votre base doit correctement fonctionner à présent. | ||
| - | |||
| - | ==== Compacter l' | ||
| - | |||
| - | Mysql stocke ses fichiers dans le dossier / | ||
| - | |||
| - | Pistes pour comprendre et corriger ce problème : | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * Exporter toutes les bases de données, arrêter mysql, supprimer le fichier, démarrer sql et importer toutes les bases. | ||
| - | |||
| - | |||
| - | ==== Déplacer ses bases de données MySQL ==== | ||
| - | |||
| - | <note warning> | ||
| - | L' | ||
| - | Toutefois, il peut exister plusieurs fichiers '' | ||
| - | < | ||
| - | $ mysqld --verbose --help | head -n13 | tail -n2 | ||
| - | Default options are read from the following files in the given order: | ||
| - | /etc/my.cnf / | ||
| - | </ | ||
| - | Éventuellement ce fichier contient des directives **!includedir**. Il faut alors chercher dans ces répertoires le fichier qui contient **datadir**. | ||
| - | |||
| - | Dans la suite, nous allons déplacer les données dans **/ | ||
| - | |||
| - | Tout d' | ||
| - | < | ||
| - | [[: | ||
| - | < | ||
| - | datadir = /home/mysql | ||
| - | </ | ||
| - | On suppose que l' | ||
| - | On déplace les données : | ||
| - | < | ||
| - | |||
| - | Malheureusement cela ne suffit pas. | ||
| - | Le premier problème vient du fichier''/ | ||
| - | < | ||
| - | $ head / | ||
| - | sanity () { | ||
| - | if [ ! -r / | ||
| - | echo "MySQL configuration not found at / | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | if [ ! -d / | ||
| - | echo "MySQL data dir not found at / | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | if [ ! -d / | ||
| - | echo "MySQL system database not found. Please run mysql_install_db tool." | ||
| - | exit 1 | ||
| - | fi | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Il faut donc créer le répertoire **/ | ||
| - | < | ||
| - | $ sudo chown -R mysql:mysql / | ||
| - | $ sudo chmod -R 700 / | ||
| - | |||
| - | Il faut maintenant configurer [[: | ||
| - | < | ||
| - | $ tail / | ||
| - | # Site-specific additions and overrides. See local/ | ||
| - | #include < | ||
| - | </ | ||
| - | [[: | ||
| - | < | ||
| - | # Allow data dir access | ||
| - | / | ||
| - | / | ||
| - | </ | ||
| - | Rechargez : | ||
| - | < | ||
| - | Redémarrez le service : | ||
| - | < | ||
| - | Vérifiez le changement : | ||
| - | < | ||
| - | $ mysql -u root -p -e ' | ||
| - | Enter password: | ||
| - | +--------------+ | ||
| - | | @@datadir | ||
| - | +--------------+ | ||
| - | | / | ||
| - | +--------------+ | ||
| - | </ | ||
| - | |||
| - | ==== Transférer une base de données entre deux serveurs via SSH ==== | ||
| - | |||
| - | === Préambule === | ||
| - | |||
| - | Dans le cadre d'une infra sans serveur spécifique de base de données, et que l'on souhaite partager une base commune. | ||
| - | |||
| - | === Mise en place === | ||
| - | |||
| - | Dans un premier temps il faut remplir deux conditions : | ||
| - | * que l' | ||
| - | * que l' | ||
| - | |||
| - | Pour une reconnaissance utilisateur d'un serveur à un autre : [[ssh# | ||
| - | |||
| - | Pour que MySql reconnaisse l' | ||
| - | |||
| - | < | ||
| - | [mysql] | ||
| - | user=nom_utilisateur | ||
| - | password=mot_de_passe_utilisateur | ||
| - | |||
| - | [mysqldump] | ||
| - | user=nom_utilisateur | ||
| - | password=mot_de_passe_utilisateur | ||
| - | </ | ||
| - | Protéger le : | ||
| - | |||
| - | chmod 600 ~/.my.cnf | ||
| - | | ||
| - | Transférer depuis le serveur **A** vers le **B** : | ||
| - | |||
| - | mysqldump nom_bdd_serveur_A | ssh utilisateur_serveur_B@ip_serveur_B mysql nom_bbd_serveur_B | ||
| - | | ||
| - | Exemple de commande en tache [[cron|CRON]] : | ||
| - | |||
| - | 10 0 * * * mysqldump nom_bdd_serveur_A | ssh utilisateur_serveur_B@ip_serveur_B mysql nom_bbd_serveur_B >/ | ||
| - | ===== Administrer MySQL via une une interface Web ===== | ||
| - | |||
| - | Il est possible d’administrer un serveur MySQL via une interface Web avec [[: | ||
| - | |||
| - | ===== Liens ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * La page dédiée aux [[: | ||
| - | * [[: | ||
| - | * [[http:// | ||
| - | * [[http:// | ||
| - | * La page des [[:SGBD]]. | ||
| - | * [[: | ||
| - | * [[.:? | ||
| - | |||
| - | ---- | ||
| - | |||
| - | // | ||
