technique:mysql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
technique:mysql [2024/02/13 17:05] – [Restauration MySql] guillaumevtechnique:mysql [2024/04/02 15:07] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Commandes MySQL ====== +**Cette page est obsolèteVeuillez accéder au contenu à son nouvel emplacement [[https://bibliotech.cemea.org/books/outils-technique/page/mysql|mysql]]**
- +
-===== Connexion ===== +
- +
-Se connecter à MySQL en ligne de commande sous Linux : +
- +
-<code> +
-mysql ‐u nomutilisateur ‐p +
- +
-</code> +
- +
-Afficher les bases de données MySQL existantes : +
- +
-<code> +
-SHOW DATABASES; +
- +
-</code> +
- +
-Se placer et utiliser une base de données : +
- +
-<code> +
-USE nomdelabdd; +
- +
-</code> +
- +
-Afficher les tables de cette base de données : +
- +
-<code> +
-SHOW TABLES; +
- +
-</code> +
- +
-Afficher la structure (colonnes) d'une table de la base de données : +
- +
-<code> +
-DESCRIBE nomdelatable; +
- +
-</code> +
- +
-Supprimer une table +
- +
-<code> +
-DROP TABLE nomdelatable; +
- +
-</code> +
- +
-===== Manipulation d'une base de données MySQL ===== +
- +
-Création de la base de données : +
- +
-<code> +
-CREATE DATABASE nomdelabdd; +
- +
-</code> +
- +
-Supprimer la base de données : +
- +
-<code> +
-DROP DATABASE nomdelabdd; +
- +
-</code> +
- +
-===== Gestion des users ===== +
- +
-Création d'un utilisateur +
- +
-<code> +
-create USER 'nomuser'@'localhost' IDENTIFIED BY 'motdepassesecret'; +
- +
-</code> +
- +
-Attribution des privilèges complets sur une base : +
- +
-<code> +
-GRANT ALL PRIVILEGES ON nombase.TO 'nomuser'@'localhost'; +
-flush privileges; +
- +
-</code> +
- +
-Attribution des privilèges en consultation : +
- +
-<code> +
-GRANT SELECT ON nombase.TO 'nomuser'@'localhost'; +
-flush privileges; +
- +
-</code> +
- +
-Suppression d'un user : +
- +
-<code> +
-DROP USER 'nomuser@localhost'; +
- +
-</code> +
- +
-===== Manipulation des tables d'une base de données MySQL ===== +
- +
-Création d'une table : +
- +
-<code> +
-CREATE TABLE nomdelatable ( nomcolonne1 INT , nomcolonne2 FLOAT , nomcolonne3 VARCHAR ( 50 ), nomcolonne3 CHAR ( 50 ) ); +
- +
-</code> +
- +
-Supprimer une table : +
- +
-<code> +
-DROP TABLE nomdelatable ; +
- +
-</code> +
- +
-==== Modification d'une table ==== +
- +
-Ajouter une colonne à une table : +
- +
-<code> +
-ALTER TABLE nomdelatable ADD nomdecolonne INT ; +
-ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR ( 50 ); +
- +
-</code> +
- +
-<code> +
-ALTER TABLE nomdelatable ADD COLUMN nomdelacolonne INT ; +
- +
-</code> +
- +
-Supprimer une colonne d'une table : +
- +
-<code> +
-ALTER TABLE nomdelatable DROP COLUMN nomdecolonne1 ; +
- +
-</code> +
- +
-Renommer / changer le nom d'une colonne de la table : +
- +
-<code> +
-ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable +
- +
-</code> +
- +
-<code> +
-ALTER TABLE nomancientable RENAME TO nomnouveautable ; +
- +
-</code> +
- +
-<code> +
-RENAME TABLE nomancientable TO nomnouveautable ; +
- +
-</code> +
- +
-Renommer / changer le type d'une colonne : +
- +
-<code> +
-ALTER TABLE nomdelatable CHANGE nomdelacolonne nouveaunomdelacolonne INT ; +
- +
-</code> +
- +
-Ajouter une contrainte de clé primaire sur une colonne d'une table : +
- +
-<code> +
-ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne ); +
- +
-</code> +
- +
-<code> +
-ALTER TABLE nomdelatable ADD CONSTRAINT pk_nomdelacontrainte PRIMARY KEY ( nomcolonne ); +
- +
-</code> +
- +
-Supprimer une contrainte de clé primaire sur une colonne : +
- +
-<code> +
-ALTER TABLE nomdelatable DROP PRIMARY KEY ; +
- +
-</code> +
- +
-Ajouter une contrainte de clé étrangère sur une colonne d'une table : +
- +
-<code> +
-ALTER TABLE nomdelatable ADD CONSTRAINT fk_nomdelacontrainte FOREIGN KEY ( nomcolonne ) REFERENCES tabledereference ( nomcolonne ); +
- +
-</code> +
- +
-Supprimer une contrainte de clé étrangère sur une colonne d'une table : +
- +
-<code> +
-ALTER TABLE nomdelatable DROP CONSTRAINT fk_nomdelacontrainte ; +
- +
-</code> +
- +
-==== Requêtes SQL de base ==== +
- +
-Afficher / sélectionner des enregistrements d'une table SQL : +
- +
-<code> +
-SELECT nomcolonne FROM nomtable ; +
- +
-</code> +
- +
-Afficher / sélectionner des enregistrements d'une table SQL de façon distincte : +
- +
-<code> +
-SELECT DISTINCT nomcolonne FROM nomtable ; +
- +
-</code> +
- +
-Afficher / sélectionner des enregistrements d'une table SQL avec une condition : +
- +
-<code> +
-SELECT nomcolonne FROM nomtable WHERE nomcolonne = '1'+
-SELECT nomcolonne FROM nomtable WHERE nomcolonne LIKE '%.com' ; +
- +
-</code> +
- +
-Afficher / sélectionner des enregistrements de plusieurs tables via une jointure internet : +
- +
-<code> +
-SELECT colonne1 , colonne2 , colonne3  FROM table1 INNER JOIN table2 ON table1 . colonne1 = table2 . colonne3 WHERE colonne1 = 'cequejecherche' +
- +
-</code> +
- +
-Mise à jour de l'ensemble des enregistrements sur une colonne d'une table : +
- +
-<code> +
-UPDATE nomtable SET nomcolonne1 = 'mavaleur' , nomcolonne2 = 'mavaleur2' +
- +
-</code> +
- +
-Mise à jour de l'ensemble des enregistrements sur une colonne d'une table avec une condition : +
- +
-<code> +
-UPDATE nomtable SET nomcolonne1 = 'mavaleur' , nomcolonne2 = 'mavaleur2' WHERE nomcolonne3 = '0' +
- +
-</code> +
- +
-Insérer un enregistrement dans une table : +
- +
-<code> +
-INSERT INTO nomtable ( colonne1 , colonne2 , colonne3 ) VALUES ( valeu1 , valeur2 , valeur3 ); +
- +
-</code> +
- +
-Supprimer un enregistrement dans une table : +
- +
-<code> +
-DELETE FROM nomtable WHERE nomcolonne = 'lavaleur' +
- +
-</code> +
- +
-Trouver la valeur Maximal d'une colonne et ne garder que celle ligne : +
- +
-<code> +
-SELECT MAX(macolonne) FROM YourTable +
- +
-</code> +
- +
-===== Sauvegardes ===== +
- +
-Pour sauvegarder toutes les bases de données on utilise la commande suivante : +
- +
-<code> +
-mysqldump --user=mon_user --password=mon_password --all-databases> fichier_destination.sql +
- +
-</code> +
- +
-Pour sauvegarder une base de données précise : +
- +
-<code> +
-mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base> fichier_destination.sql +
- +
-</code> +
- +
-Pour sauvegarder plusieurs bases de données : +
- +
-<code> +
-mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base_1 nom_de_la_base_2> fichier_destination.sql +
- +
-</code> +
- +
-Pour sauvegarder une table précise : +
- +
-<code> +
-mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table> fichier_destination.sql +
- +
-</code> +
- +
-Pour sauvegarder plusieurs tables : +
- +
-<code> +
-mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table_1 nom_de_la_table_2> fichier_destination.sql +
- +
-</code> +
- +
-Pour tous ces types de sauvegarde mysql les fichiers générés sont en .sql. Cela dit on peut mettre l’extension que l’on veut comme .txt par exemple. Ca n’a pas d’importance. Les fichiers sont lisibles en clair et contiennent toutes les commandes SQL pour pouvoir faire une restauration mysql. +
- +
-Cela dit les fichiers .sql sont volumineux. Pour gagner de la place, on va les compresser à la volée lors de la sauvegarde. +
- +
-==== Compresser la sauvegarde mysql ==== +
- +
-Pour compresser les données, nous allons utiliser gunzip après avoir invoqué mysqldump. +
- +
-Cela donnera des commandes du type : +
- +
-<code> +
-mysqldump <commandes> gzip> fichier_destination.sql.gz +
- +
-</code> +
- +
-Exemple avec la commande de sauvegarde complète : +
-<code> +
- +
-mysqldump --user=mon_user --password=mon_password --all-databases | gzip> fichier_destination.sql.gz +
- +
-</code> +
- +
-A noter qu’avec cette méthode, la commande de sauvegarde mysql produit un seul fichier compressé. le fichier source n’existe plus. +
- +
-===== Restauration MySql ===== +
- +
-Pour la restauration mysql on n’utilise plus la commande mysqldump. On utilise la commande mysql. La commande mysql va aller lire un fichier puis le restaurer en fonction de son contenu et de ses instructions. +
- +
-La restauration mysql peut se faire pour toutes les bases de données ou pour un base de données précise. +
- +
-Exemple sans distinction de base de données : +
- +
-<code> +
-mysql --user=mon_user --password=mon_password <fichier_source.sql +
- +
-</code> +
- +
-Autre exemple pour restaurer dans une base de données précise : +
- +
-<code> +
-mysql --user=mon_user --password=mon_password nom_de_la_base <fichier_source.sql +
- +
-</code> +
-===== Restauration d'une DB dans un docker ===== +
- +
-Si notre base de données tourne dans un docker, il suffit d'appeler docker exec (ou docker compose exec) avec le paramètre -T pour pouvoir restaurer un dump : +
- +
-<code> +
-docker compose exec -T [nom du docker dans le composemysql limesurvey --user=password --password=password <dump.sql +
- +
-docker  exec -T [nom complet du dockermysql limesurvey --user=password --password=password <dump.sql +
- +
-</code> +
- +
- +
-===== Backup complet SQL des bases ===== +
- +
-Pour toutes les bases : +
- +
-<code> +
-mysqldump --user=root --password=XXX --all-databases> alldatabases-`date +%Y%m%d-%H%M`.sql +
- +
-</code> +
- +
-Script complet de backup à adapter : +
- +
-<code> +
-#!/usr/bin/env bash +
- +
-SQL_USER="root" +
-SQL_PASS="XXX" +
-SQL_HOST="localhost" +
- +
-FILE_PREFIX="backup_db" +
- +
-FILE_DATE=`date +%Y-%m-%d-%H-%M-%S` +
-TARGET_FILE_PATH="/root/Backups/" +
-mkdir -p "$TARGET_FILE_PATH" +
- +
-DATABASES=$(mysql -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS -e "SHOW DATABASES;" | tr -d " | " | grep -v -e Database -e _schema -e mysql) +
- +
-for DB_NAME in "$DATABASES"; do +
-        mysqldump -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS --single-transaction --skip-lock-tables "$DB_NAME"> "$TARGET_FILE_PATH""$FILE_PREFI$ +
-        gzip "$TARGET_FILE_PATH""$FILE_PREFIX"."$DB_NAME"."$FILE_DATE".sql +
-done +
- +
-</code> +
- +
  • technique/mysql.txt
  • Dernière modification : 2024/04/02 15:07
  • de 127.0.0.1