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
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
technique:mysql [2018/04/06 23:18] francoisatechnique:mysql [2022/11/22 00:08] francoisa
Ligne 2: Ligne 2:
  
 ===== Connexion ===== ===== Connexion =====
- 
-mysql ‐u nomutilisateur ‐p SHOW DATABASES; USE nomdelabdd; SHOW TABLES; DESCRIBE nomdelatable; 
- 
-===== Actions sur bases ===== 
- 
-CREATE DATABASE nomdelabdd; DROP DATABASE nomdelabdd; 
- 
-CREATE TABLE nomdelatable ( nomcolonne1 INT, nomcolonne2 FLOAT, nomcolonne3 VARCHAR(50), nomcolonne3 CHAR(50) ); 
- 
-DROP TABLE nomdelatable; 
- 
-''DELETE FROM nom_de_la_table WHERE nom_de_l'entree="valeur de l'entre"'' 
  
 Se connecter à MySQL en ligne de commande sous Linux : Se connecter à MySQL en ligne de commande sous Linux :
Ligne 19: Ligne 7:
 <code> <code>
 mysql ‐u nomutilisateur ‐p mysql ‐u nomutilisateur ‐p
 +
 </code> </code>
  
Ligne 25: Ligne 14:
 <code> <code>
 SHOW DATABASES; SHOW DATABASES;
 +
 </code> </code>
  
Ligne 31: Ligne 21:
 <code> <code>
 USE nomdelabdd; USE nomdelabdd;
 +
 </code> </code>
  
Ligne 37: Ligne 28:
 <code> <code>
 SHOW TABLES; SHOW TABLES;
 +
 </code> </code>
  
Ligne 43: Ligne 35:
 <code> <code>
 DESCRIBE nomdelatable; DESCRIBE nomdelatable;
 +
 </code> </code>
  
-=== Manipulation d'une base de données MySQL ===+Supprimer une table 
 + 
 +<code> 
 +DROP TABLE nomdelatable; 
 + 
 +</code> 
 + 
 +===== Manipulation d'une base de données MySQL =====
  
 Création de la base de données : Création de la base de données :
  
 <code> <code>
- CREATE DATABASE nomdelabdd;+CREATE DATABASE nomdelabdd; 
 </code> </code>
  
Ligne 56: Ligne 57:
  
 <code> <code>
- DROP DATABASE nomdelabdd;+DROP DATABASE nomdelabdd; 
 </code> </code>
  
-=== Manipulation des tables d'une base de données MySQL ===+===== 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 : Création d'une table :
  
 <code> <code>
-CREATE TABLE  nomdelatable  +CREATE TABLE nomdelatable ( nomcolonne1 INT , nomcolonne2 FLOAT , nomcolonne3 VARCHAR ( 50 ), nomcolonne3 CHAR ( 50 ) ); 
-   +
-nomcolonne1 INT    +
-nomcolonne2 FLOAT    +
-nomcolonne3 VARCHAR   <font inherit/inherit;;#0000cf font-weight: bold;;inherit>50   ),  +
-nomcolonne3 CHAR   <font inherit/inherit;;#0000cf font-weight: bold;;inherit>50    +
-  ); +
 </code> </code>
  
Ligne 76: Ligne 105:
  
 <code> <code>
- DROP TABLE  nomdelatable   +DROP TABLE nomdelatable ; 
 </code> </code>
  
-== Modification d'une table ==+==== Modification d'une table ====
  
 Ajouter une colonne à une table : Ajouter une colonne à une table :
  
 <code> <code>
- ALTER TABLE  nomdelatable ADD  nomdecolonne INT   ;  +ALTER TABLE nomdelatable ADD nomdecolonne INT ; 
- ALTER TABLE  nomdelatable ADD  nomdecolonne1 VARCHAR   <font inherit/inherit;;#0000cf font-weight: bold;;inherit>50   ); +ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR ( 50 ); 
 </code> </code>
  
 <code> <code>
- ALTER TABLE  nomdelatable ADD COLUMN  nomdelacolonne INT   +ALTER TABLE nomdelatable ADD COLUMN nomdelacolonne INT ; 
 </code> </code>
  
Ligne 95: Ligne 127:
  
 <code> <code>
- ALTER TABLE  nomdelatable DROP COLUMN  nomdecolonne1   +ALTER TABLE nomdelatable DROP COLUMN nomdecolonne1 ; 
 </code> </code>
  
Ligne 101: Ligne 134:
  
 <code> <code>
- ALTER TABLE  nomdelatable RENAME AS  lenouveaunomdelatable +ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable 
 </code> </code>
  
 <code> <code>
- ALTER TABLE  nomancientable RENAME TO  nomnouveautable   +ALTER TABLE nomancientable RENAME TO nomnouveautable ; 
 </code> </code>
  
 <code> <code>
- RENAME TABLE  nomancientable TO  nomnouveautable   +RENAME TABLE nomancientable TO nomnouveautable ; 
 </code> </code>
  
Ligne 115: Ligne 151:
  
 <code> <code>
- ALTER TABLE  nomdelatable  CHANGE  nomdelacolonne  nouveaunomdelacolonne INT   +ALTER TABLE nomdelatable CHANGE nomdelacolonne nouveaunomdelacolonne INT ; 
 </code> </code>
  
Ligne 121: Ligne 158:
  
 <code> <code>
- ALTER TABLE  nomdelatable ADD PRIMARY KEY    ( nomcolonne   ); +ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne ); 
 </code> </code>
  
 <code> <code>
- ALTER TABLE  nomdelatable  +ALTER TABLE nomdelatable ADD CONSTRAINT pk_nomdelacontrainte PRIMARY KEY ( nomcolonne ); 
- ADD CONSTRAINT  pk_nomdelacontrainte PRIMARY KEY    ( nomcolonne   ); +
 </code> </code>
  
Ligne 132: Ligne 170:
  
 <code> <code>
- ALTER TABLE  nomdelatable DROP PRIMARY KEY   +ALTER TABLE nomdelatable DROP PRIMARY KEY ; 
 </code> </code>
  
Ligne 138: Ligne 177:
  
 <code> <code>
- ALTER TABLE  nomdelatable ADD CONSTRAINT  fk_nomdelacontrainte  +ALTER TABLE nomdelatable ADD CONSTRAINT fk_nomdelacontrainte FOREIGN KEY ( nomcolonne ) REFERENCES tabledereference ( nomcolonne ); 
- FOREIGN KEY    ( nomcolonne   ) REFERENCES  tabledereference   ( nomcolonne   ); +
 </code> </code>
  
Ligne 145: Ligne 184:
  
 <code> <code>
- ALTER TABLE  nomdelatable DROP CONSTRAINT  fk_nomdelacontrainte   +ALTER TABLE nomdelatable DROP CONSTRAINT fk_nomdelacontrainte ; 
 </code> </code>
  
-=== Requêtes SQL de base ===+==== Requêtes SQL de base ====
  
 Afficher / sélectionner des enregistrements d'une table SQL : Afficher / sélectionner des enregistrements d'une table SQL :
  
 <code> <code>
- SELECT  nomcolonne FROM  nomtable   +SELECT nomcolonne FROM nomtable ; 
 </code> </code>
  
Ligne 159: Ligne 200:
  
 <code> <code>
- SELECT DISTINCT  nomcolonne FROM  nomtable   +SELECT DISTINCT nomcolonne FROM nomtable ; 
 </code> </code>
  
Ligne 165: Ligne 207:
  
 <code> <code>
- SELECT  nomcolonne FROM  nomtable WHERE  nomcolonne      '1'   ;  +SELECT nomcolonne FROM nomtable WHERE nomcolonne = '1'
- SELECT  nomcolonne FROM  nomtable WHERE  nomcolonne LIKE    '%.com'   +SELECT nomcolonne FROM nomtable WHERE nomcolonne LIKE '%.com' ; 
 </code> </code>
  
Ligne 172: Ligne 215:
  
 <code> <code>
- SELECT  colonne1    colonne2   ,  colonne3  +SELECT colonne1 , colonne2 , colonne3  FROM table1 INNER JOIN table2 ON table1 . colonne1 = table2 . colonne3 WHERE colonne1 = 'cequejecherche' 
- FROM  table1  +
- INNER JOIN  table2  +
- ON  table1   . colonne1  = table2   . colonne3  +
- WHERE  colonne1      'cequejecherche' +
 </code> </code>
  
Ligne 182: Ligne 222:
  
 <code> <code>
- UPDATE  nomtable  +UPDATE nomtable SET nomcolonne1 = 'mavaleur' , nomcolonne2 = 'mavaleur2' 
- SET  nomcolonne1    'mavaleur'   , nomcolonne2    'mavaleur2' +
 </code> </code>
  
Ligne 189: Ligne 229:
  
 <code> <code>
- UPDATE  nomtable  +UPDATE nomtable SET nomcolonne1 = 'mavaleur' , nomcolonne2 = 'mavaleur2' WHERE nomcolonne3 = '0' 
- SET  nomcolonne1    'mavaleur'   , nomcolonne2    'mavaleur2'  +
- WHERE  nomcolonne3     '0' +
 </code> </code>
  
Ligne 197: Ligne 236:
  
 <code> <code>
- INSERT INTO  nomtable    ( colonne1   , colonne2   , colonne3    +INSERT INTO nomtable ( colonne1 , colonne2 , colonne3 ) VALUES ( valeu1 , valeur2 , valeur3 ); 
- VALUES    ( valeu1   , valeur2   , valeur3   ); +
 </code> </code>
  
Ligne 204: Ligne 243:
  
 <code> <code>
- DELETE FROM  nomtable WHERE  nomcolonne    'lavaleur' +DELETE FROM nomtable WHERE nomcolonne = 'lavaleur' 
 </code> </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>
 +
 +===== 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