Commande SQL pour afficher l'historique des requêtes

Réponses:

161

essayer

 cat ~/.mysql_history

cela vous montrera toutes les commandes mysql exécutées sur le système

Maysam Torabi
la source
2
enfin pas tous , la suppression se produit pour certains qui contiennent des chaînes comme "mot de passe".
mckenzm
1
Il n'est généralement pas non plus à jour avec votre CLI MySQL ouverte, vous devrez donc probablement utiliser exitMySQL puis lire le fichier.
Joel Mellon
1
Cela ne montre que les commandes exécutées par l'utilisateur qui est connecté.
Christia
1
Comment faire cela dans Windows
ßiansor Å. Ålmerol
Y a-t-il une possibilité que d'autres commandes soient supprimées ou qu'elles ne soient pas ordonnées? Et le journal se met-il à jour automatiquement en temps réel?
Drubio
32

Pour MySQL> 5.1.11 ou MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Jetez un œil à la table mysql.general_log

Si vous souhaitez générer une sortie dans un fichier journal:

  1. SET GLOBAL log_output = "FILE";
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log"
  3. SET GLOBAL general_log = 'ON';

Comme mentionné par jeffmjack dans les commentaires, ces paramètres seront oubliés avant la prochaine session à moins que vous ne modifiiez les fichiers de configuration (par exemple, éditez /etc/mysql/my.cnf, puis redémarrez pour appliquer les modifications).

Maintenant, si tu veux tu peux tail -f /var/log/mysql/mysql.log

Plus d'informations ici: Variables système du serveur

GTodorov
la source
3
Juste une clarification à ce qui précède: Les commandes copier-coller ici sont pour une seule session de MySQL, par exemple, vous pouvez les saisir à partir de la ligne de commande interactive MySQL. Si vous voulez qu'elles soient une fonctionnalité permanente de votre instance MySQL, vous devez placer ces commandes dans /etc/mysql/my.cnf et redémarrer le service MySQL.
jeffmjack
Notez également que la journalisation s'arrêtera si elle /path/to/your/logfile.logest supprimée, jusqu'à ce que vous exécutiez à SET GLOBAL general_log_file = "/path/to/your/logfile.log";nouveau (ou peut-être redémarrez la session si vous avez modifié la configuration?).
Skippy le Grand Gourou
21

(Linux) Ouvrez votre terminal ctrl+alt+t exécutez la commande

 cat ~/.mysql_history

vous obtiendrez tout l'historique des requêtes mysql précédent en profiter :)

Vamsidhar Muggulla
la source
18

Vous le trouverez là

~/.mysql_history

Vous le rendrez lisible (sans les échappements) comme ceci:

sed "s/\\\040/ /g" < .mysql_history
DimiDak
la source
2

Regardez ~/.myslgui/query-browser/history.xml ici vous pouvez trouver les dernières requêtes faites avec mysql_query_browser (quelques jours)

user4493696
la source
0

Vous pouvez voir l'historique à partir de ~ / .mysql_history. Cependant, le contenu du fichier est encodé par wctomb. Pour afficher le contenu:

shell> chat ~ / .mysql_history | python2.7 -c "import sys; print (''. join ([l.decode ('unicode-escape') pour l dans sys.stdin]))"

Source: vérifier l'historique des requêtes MySQL à partir de la ligne de commande

GoYun.Info
la source
-1

Vous pouvez consulter le cache de requêtes: http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm mais il pourrait ne pas vous donner accès aux requêtes réelles et sera très hit-and-miss si cela a fonctionné (jeu de mots subtil prévu)

Mais MySQL Query Browser maintient très probablement sa propre liste de requêtes qu'il exécute, en dehors du moteur MySQL. Vous devrez faire de même dans votre application.

Edit: voir le commentaire de dan m menant à ceci: Comment afficher les dernières requêtes exécutées sur MySQL? semble solide.

Kieren Johnstone
la source