CodeSnippetsMySQL

Wiki.CodeSnippetsMySQL History

Hide minor edits - Show changes to output

Changed line 10 from:
to:
* MediaWiki: @@LocalSettings.php@@
Added line 9:
* Symphonie: @@config/databases.yml@@
Added line 7:
* Typo3: @@sysext/adodb/adodb@@
Added lines 11-16:

!!! Quick Win mother fucker !
Création rapide d'une BDD et d'un user dédié:[@
CREATE DATABASE db
GRANT ALL PRIVILEGES ON db.* to  'user'@'localhost' IDENTIFIED BY 'mon mdp'@]

May 22, 2014, at 04:10 PM EST by 89.31.149.185 -
Added lines 26-28:
* La commande brute:[@
SELECT TABLE_SCHEMA, table_name, ENGINE, TABLE_ROWS  FROM INFORMATION_SCHEMA.TABLES ;@]

May 22, 2014, at 04:05 PM EST by 89.31.149.185 -
Changed lines 19-25 from:
to:
!!! Afficher le status des tables;
* Afficher toutes les tables en InnoDB:[@
SELECT TABLE_SCHEMA, table_name, TABLE_ROWS  FROM INFORMATION_SCHEMA.TABLES  WHERE engine = 'InnoDB';@]
* Afficher toutes les tables en MyISAM (bweerk):[@
SELECT TABLE_SCHEMA, table_name, TABLE_ROWS  FROM INFORMATION_SCHEMA.TABLES  WHERE engine = 'MyISAM';@]
* Afficher le reste des tables:[@
SELECT TABLE_SCHEMA, table_name, ENGINE, TABLE_ROWS  FROM INFORMATION_SCHEMA.TABLES  WHERE engine != 'MyISAM' AND  engine != 'InnoDB' ;@]
May 22, 2014, at 03:38 PM EST by 89.31.149.185 -
Deleted line 0:
Added lines 3-9:
!!! Configuration mysql des CMS courants
Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:
* Drupal: @@sites/default/settings.php@@
* Spip: @@conf/connect.php@@
* Wordpress: @@wp-config.php@@

Added lines 13-30:
!!! Exécuter une commande SQL sur toutes les tables d'une base
Cette commande sort un court extrait de chaque table. Génial pour faire du reverese engeerneering sur une appli ;-):[@for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do  echo "mysql centreonprod -e select * from  $i limit 0,10" ; done @]
La version suivante est la meilleur:[@
for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do echo -en "\n\n==> Table: $i\n\n" >> /home/nexen/roc ; mysql centreonprod -e "select * from  $i limit 0,10\G" >> /home/nexen/roc ; done@]




!!! Lister tous les utilisateurs MySQL
Utile pour les migrations pour le coup:[@
for i in $(mysql -e "SELECT user, host FROM mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' | tail -n +2) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]

!!! Lister toutes les bases de MySQL
Marche pour Maria/MySQL. Pour Percona, il faudra rajouter une expression dans le grep ...[@
 for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do  echo $i ; done@]
Et ci-dessous une commande pour créer un utilisateur par base. Pratique lors de migrations (il vous faudra apg pour celle là, apg peut ralentir un peu le processus):[@
for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do printf "GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';\n" ${i} ${i} "10.0.0.%" "$(apg -m 10 -M ncl -n 1 -c /dev/urandom)" ; done@]

Changed lines 34-41 from:
to:
Les commandes suivantes peuvent aider à dégorger la BDD:
* Lister les requetes par ordre de temps:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G'@]
* Avoit une sorte de MySQLTop:[@
watch "mysql -e 'SELECT ID, USER, DB, TIME, STATE, INFO  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time DESC'  " @]
* Lister toutes les requetes, par ordre de durée:[@
mysql  -e 'SELECT ID, USER, DB, TIME, STATE, LEFT(INFO, 20)  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time ASC ' @]

Changed lines 43-49 from:
to:
* Cron de nettoyage qui kill les commandes en Sleep de plus de 30s:[@
*/1 * * * * root for i in $(mysql --skip-column-names  -e 'SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 30 AND Command  like "Sleep"') ; do mysqladmin kill $i ; done@]
* Tuer tous les Selects de plus de 30 secondes:[@
for i in $(mysql -e "SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST where INFO like '%SELECT%' and time > 30  "  ); do mysqladmin kill  $i ; done
@]

Deleted lines 51-71:



!! Vrac

!!! Mysql, quand ça lock ou que ça sleep
Cette commande can save your life, believe me:[@
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G
@]ou directement dans le shell:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G'
@]
Dans le délire je ferme pas les connexions, on pourra metre un cron comme celui ci, pour tuer tous les sleep de plus de 30 secondes toutes els minutes:[@
*/1 * * * * root for i in $(mysql --skip-column-names  -e 'SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 30 AND Command  like "Sleep"') ; do mysqladmin kill $i ; done@]
Tuer tous les Selects de plus de 30 secondes:[@
for i in $(mysql -e "SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST where INFO like '%SELECT%' and time > 30  "  ); do mysqladmin kill  $i ; done
@]

Trouver les requetes les plus longues:[@
mysql  -e 'SELECT ID, USER, DB, TIME, STATE, LEFT(INFO, 20)  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time ASC ' @]

Deleted lines 57-83:
!!! Exécuter une commande SQL sur toutes les tables d'une base
Cette commande sort un court extrait de chaque table. Génial pour faire du reverese engeerneering sur une appli ;-):[@for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do  echo "mysql centreonprod -e select * from  $i limit 0,10" ; done @]
La version suivante est la meilleur:[@
for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do echo -en "\n\n==> Table: $i\n\n" >> /home/nexen/roc ; mysql centreonprod -e "select * from  $i limit 0,10\G" >> /home/nexen/roc ; done@]

!!! Configuration mysql des CMS
Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:
* Drupal: @@sites/default/settings.php@@
* Spip: @@conf/connect.php@@
* Wordpress: @@wp-config.php@@


!!! Lister tous les utilisateurs MySQL
Utile pour les migrations pour le coup:[@
for i in $(mysql -e "SELECT user, host FROM mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' | tail -n +2) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]


!!! Faire le ménage dans les process MySQL
Comme d'hab, éviter de killer les INSERT:
[@for i in $(mysqladmin  proc | grep 'TMP_PDT_reco_fiche'  | awk '{print $2}' ) ; do mysqladmin kill $i ; done@]


!! Lister toutes les bases de MySQL
Marche pour Maria/MySQL. Pour Percona, il faudra rajouter une expression dans le grep ...[@
 for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do  echo $i ; done@]
Et ci-dessous une commande pour créer un utilisateur par base. Pratique lors de migrations (il vous faudra apg pour celle là, apg peut ralentir un peu le processus):[@
for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do printf "GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';\n" ${i} ${i} "10.0.0.%" "$(apg -m 10 -M ncl -n 1 -c /dev/urandom)" ; done@]
May 22, 2014, at 03:25 PM EST by 89.31.149.185 -
Added lines 1-68:

!! Exploitation Applicative

!! Exploitation Interne


!! Administration Externe

!!! Détection de problèmes

!!! Désengorgement

!!! Export de données




!! Vrac

!!! Mysql, quand ça lock ou que ça sleep
Cette commande can save your life, believe me:[@
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G
@]ou directement dans le shell:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G'
@]
Dans le délire je ferme pas les connexions, on pourra metre un cron comme celui ci, pour tuer tous les sleep de plus de 30 secondes toutes els minutes:[@
*/1 * * * * root for i in $(mysql --skip-column-names  -e 'SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 30 AND Command  like "Sleep"') ; do mysqladmin kill $i ; done@]
Tuer tous les Selects de plus de 30 secondes:[@
for i in $(mysql -e "SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST where INFO like '%SELECT%' and time > 30  "  ); do mysqladmin kill  $i ; done
@]

Trouver les requetes les plus longues:[@
mysql  -e 'SELECT ID, USER, DB, TIME, STATE, LEFT(INFO, 20)  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time ASC ' @]


!!! Importer tes les tables d'un backup dans MySQL:
Se mettre dans le dossier où les tables sauvegardées sont de la forme <base>-<table>:[@
for i in $(ls -1 . | sed 's/-.*//' | uniq ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -p<PASS> -h10.0.4.52 $i ; echo "=> $i done" ; done@]
Ce script va afficher sortir le nom des bases grâce au @@ls -1@@ et les filtres qui sont derrière. Ensuite, pour chaque base, il va importer directement dans la bonne base de MySQL. On peut bien modifier les modèle de nommage des tables en jouant sur le pattern du sed.


!!! Exécuter une commande SQL sur toutes les tables d'une base
Cette commande sort un court extrait de chaque table. Génial pour faire du reverese engeerneering sur une appli ;-):[@for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do  echo "mysql centreonprod -e select * from  $i limit 0,10" ; done @]
La version suivante est la meilleur:[@
for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do echo -en "\n\n==> Table: $i\n\n" >> /home/nexen/roc ; mysql centreonprod -e "select * from  $i limit 0,10\G" >> /home/nexen/roc ; done@]

!!! Configuration mysql des CMS
Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:
* Drupal: @@sites/default/settings.php@@
* Spip: @@conf/connect.php@@
* Wordpress: @@wp-config.php@@


!!! Lister tous les utilisateurs MySQL
Utile pour les migrations pour le coup:[@
for i in $(mysql -e "SELECT user, host FROM mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' | tail -n +2) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]


!!! Faire le ménage dans les process MySQL
Comme d'hab, éviter de killer les INSERT:
[@for i in $(mysqladmin  proc | grep 'TMP_PDT_reco_fiche'  | awk '{print $2}' ) ; do mysqladmin kill $i ; done@]


!! Lister toutes les bases de MySQL
Marche pour Maria/MySQL. Pour Percona, il faudra rajouter une expression dans le grep ...[@
 for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do  echo $i ; done@]
Et ci-dessous une commande pour créer un utilisateur par base. Pratique lors de migrations (il vous faudra apg pour celle là, apg peut ralentir un peu le processus):[@
for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do printf "GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';\n" ${i} ${i} "10.0.0.%" "$(apg -m 10 -M ncl -n 1 -c /dev/urandom)" ; done@]
Page last modified on September 10, 2016, at 12:26 AM EST