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


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


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 :)


18

Vous le trouverez là

~/.mysql_history

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

sed "s/\\\040/ /g" < .mysql_history

2

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



-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.