sql: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
sql:mysql [2021/11/14 19:55] – add mysql_upgrade access issue phswsql:mysql [2025/10/07 21:43] (Version actuelle) – [CLI] add how to get storage engine phsw
Ligne 9: Ligne 9:
  
  
----------+
 ==== Serveur MySQL ==== ==== Serveur MySQL ====
  
Ligne 18: Ligne 18:
  
  
--------------------- 
 ==== Client MySQL ==== ==== Client MySQL ====
 Installer le paquet ''mysql-client''. La commande est ensuite ''mysql''. Installer le paquet ''mysql-client''. La commande est ensuite ''mysql''.
Ligne 45: Ligne 44:
  
  
-------------------+
 ==== CLI ==== ==== CLI ====
  
Ligne 64: Ligne 63:
 <code sql> <code sql>
 show tables; show tables;
 +</code>
 +
 +
 +=== Décrire la structure d'une table ===
 +
 +<code sql>
 +DESC table_name;
 +</code>
 +
 +Ou pour avoir la commande SQL qui permet de créer la table en question :
 +<code sql>
 +SHOW CREATE TABLE <table_name>;
 </code> </code>
  
Ligne 74: Ligne 85:
  
  
-=== Supprimer un utilisateur ===+=== Vider une base de données ===
  
-[[https://dev.mysql.com/doc/refman/5.6/en/drop-user.html|Source]]+<code sql> 
 +DROP DATABASE db; 
 +CREATE DATABASE db; 
 +</code>
  
 +
 +=== Connaître l'espace occupé par les tables ===
 +
 +[[https://stackoverflow.com/questions/6474591/how-can-you-determine-how-much-disk-space-a-particular-mysql-table-is-taking-up|Source]]
 +
 +En Mo :
 <code sql> <code sql>
-DROP USER 'jeffrey'@'localhost';+SELECT table_name, ROUND((data_length+index_length)/power(1024,2), 2) tablesize_mb FROM information_schema.tables WHERE table_schema='mydbORDER BY table_name;
 </code> </code>
  
  
 +=== Afficher les paramètres de configuration ===
 +
 +[[https://stackoverflow.com/questions/1493722/mysql-command-for-showing-current-configuration-variables|Source]]
 +<code sql>
 +SHOW VARIABLES LIKE '%max%';
 +</code>
 +
 +
 +=== Connaître le moteur de stockage utilisé pour les tables ===
 +
 +[[https://stackoverflow.com/questions/213543/how-can-i-check-mysql-engine-type-for-a-specific-table|Source]]
 +<code sql>
 +SHOW TABLE STATUS WHERE Name = 'xxx'
 +</code>
 +
 +
 +==== Dupliquer une base de données  ====
 +
 +Créer la base de données de destination, puis ([[https://stackoverflow.com/questions/675289/mysql-cloning-a-mysql-database-on-the-same-mysql-instance|source]]) :
 +<code bash>
 +mysqldump db_src | mysql db_dest
 +</code>
  
  
----------------------- 
 ==== Configurer SSL avec Let's Encrypt ==== ==== Configurer SSL avec Let's Encrypt ====
  
Ligne 124: Ligne 165:
  
  
- 
----------------------- 
 ==== PhpMyAdmin ==== ==== PhpMyAdmin ====
  
Ligne 150: Ligne 189:
  
  
- 
------------- 
  
 ==== Installer MySQL 5.7 sur Debian 8 Jessie ==== ==== Installer MySQL 5.7 sur Debian 8 Jessie ====
Ligne 172: Ligne 209:
  
  
 +==== Utilisateurs ====
  
-==== Problème d'accès avec debian-sys-maint ====+=== Problème d'accès avec debian-sys-maint ===
  
 [[https://stackoverflow.com/questions/11644300/access-denied-for-user-debian-sys-maint|Source]] [[https://stackoverflow.com/questions/11644300/access-denied-for-user-debian-sys-maint|Source]]
Ligne 182: Ligne 220:
 ALTER USER 'debian-sys-maint'@'localhost' IDENTIFIED BY '<mdp>'; ALTER USER 'debian-sys-maint'@'localhost' IDENTIFIED BY '<mdp>';
 </code> </code>
 +
 +
 +=== Mot de passe root ===
 +
 +  * https://stackoverflow.com/questions/75978151/connect-to-mariadb-with-sudo-without-password
 +  * https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password
 +  * https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-debian-11
 +  * https://linuxconfig.org/how-to-change-mariadb-user-password
 +  * https://linuxize.com/post/how-to-reset-a-mysql-root-password/
 +
 +=== Supprimer un utilisateur ===
 +
 +[[https://dev.mysql.com/doc/refman/5.6/en/drop-user.html|Source]]
 +
 +<code sql>
 +DROP USER 'jeffrey'@'localhost';
 +</code>
 +
 +=== Créer un utilisateur ===
 +
 +Avec tous les droits sur toutes les bases de données ([[https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql|source]]) :
 +<code sql>
 +CREATE USER 'user'@'localhost' IDENTIFIED BY 'motdepasse';
 +GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
 +FLUSH PRIVILEGES;
 +</code>
 +
 +Pour qu'il n'y ait pas de mot de passe ([[https://linuxconfig.org/mysql-allow-empty-password|source]]) :
 +<code sql>
 +CREATE USER 'user'@'localhost' IDENTIFIED BY '';
 +</code>
 +
 +Sans doute que cet utilisateur ne peut se connecter qu'en TCP et pas via la socket (à tester...).
 +
 +=== Voir comment un utilisateur a été créé ===
 +
 +<code sql>
 +SHOW CREATE USER user@localhost;
 +</code>
 +
 +
 +
 +==== Sauvegardes ====
 +
 +''mariadb-backup'' permet d'exporter la structure et les données d'un serveur MariaDB.
 +
 +
 +=== Mariabackup ===
 +
 +  * [[https://github.com/omegazeng/run-mariabackup]]
 +
 +Installer le paquet ''mariadb-backup''.
 +
 +Sauvegardes incrémentales et compressées :
 +<code bash>
 +# Sauvegardes :
 +mkdir 20220306-1230-full # il faut créer le dossier avant
 +mariabackup --backup --stream=xbstream --extra-lsndir=$(pwd)/20220306-1230-full | gzip > $(pwd)/20220306-1230-full/backup.stream.gz
 +mkdir 20220306-1408
 +mariabackup --backup --stream=xbstream --extra-lsndir=$(pwd)/20220306-1540 --incremental-basedir=$(pwd)/20220306-1408/ | gzip > $(pwd)/20220306-1540/backup.stream.gz 
 +
 +# Restauration :
 +cd 20220306-1230-full
 +mkdir backup
 +gunzip -c backup.stream.gz | mbstream -x -C backup/
 +cd ../20220306-1408
 +mkdir backup
 +gunzip -c backup.stream.gz | mbstream -x -C backup/
 +cd ..
 +mariabackup --prepare --target-dir 20220306-1230-full/backup
 +mariabackup --prepare --target-dir 20220306-1230-full/backup --incremental-dir 20220306-1408/backup
 +service mysql stop
 +mv /var/lib/mysql{,.old}
 +mariabackup --copy-back --target-dir 20220306-1230-full/backup/
 +chown -R mysql:mysql /var/lib/mysql
 +service mysql start
 +</code>
 +
 +
 +
 +==== Table de verrous trop petite ====
 +
 +[[https://stackoverflow.com/questions/6901108/the-total-number-of-locks-exceeds-the-lock-table-size|Source]]
 +
 +Dans ''my.cnf'', augmenter la valeur de ''innodb_buffer_pool_size'' à ''64MB'' par exemple.
 +
 +
 +
 +==== Optimisation des tables ====
 +
 +Les ''DELETE'' ne libèrent pas de la place sur le disque. Il faut exécuter : 
 +<code sql>
 +OPTIMIZE TABLE table;
 +</code>
 +
 +  * [[https://github.com/major/MySQLTuner-perl|MySQLTuner]]
  • sql/mysql.1636916159.txt.gz
  • Dernière modification : 2021/11/14 19:55
  • de phsw