From Jeznet

Wiki: CodeSnippetsMySQL

Exploitation Applicative

Configuration mysql des CMS courants

Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:

Exploitation Interne

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'

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

Afficher le status des tables;

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

Administration Externe

Détection de problèmes

Les commandes suivantes peuvent aider à dégorger la BDD:

Désengorgement

Export de données

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.

Retrieved from http://jeznet.org/Wiki/CodeSnippetsMySQL
Page last modified on September 10, 2016, at 12:26 AM EST